System.BadImageFormatException при вызове библиотеки ржавчины из консольного приложения netcore C#C#

Место общения программистов C#
Anonymous
System.BadImageFormatException при вызове библиотеки ржавчины из консольного приложения netcore C#

Сообщение Anonymous »

У меня есть простая функция ржавчины.

Код: Выделить всё

#[no_mangle]
pub extern fn add_numbers(number1: i32, number2: i32) -> i32 {
println!("Hello from rust!");
number1 + number2
}
который скомпилирован в dll с помощью

Код: Выделить всё

[lib]
name = "my_lib"
crate-type = ["dylib"]
Я попробовал использовать dll из консольного приложения C# (полная платформа), и это сработало. Однако, когда я пытаюсь сделать то же самое для консольного приложения C# netcore, я получаю System.BadImageFormatException. Вот что у меня есть на стороне C#

Код: Выделить всё

using System;
using System.Runtime.InteropServices;

namespace my_core_console
{
class Program
{
[DllImport(@"my_lib.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern Int32 add_numbers(Int32 number1, Int32 number2);

static void Main(string[] args)
{
var addedNumbers = add_numbers(10, 5);
Console.WriteLine(addedNumbers);
Console.ReadLine();
}
}
}

вместе со следующими настройками проекта.

Код: Выделить всё



Exe
netcoreapp3.1
my_core_console
x64
x64
win-x64








Always





Я попытался настроить платформу x64 так же, как и для консольного приложения полной платформы. Однако я по-прежнему получаю следующую ошибку.

Необработанное исключение. System.BadImageFormatException: была предпринята попытка загрузить программу в неправильном формате. (0x8007000B)

Я не уверен, чего мне не хватает. Буду признателен за любую подсказку.

Подробнее здесь: https://stackoverflow.com/questions/636 ... -sharp-con

Вернуться в «C#»