Это, вероятно, будет помечено как дубликат BadImageFormatException при вызове .dll, созданной из проекта C ++ в NET Core , но оригинал мне совсем не помог и не имел решения
В течение последних 2 часов я пытался заставить c # (ядро .net) и родной dll c ++ работать вместе.
Ну, как вы, наверное, уже знаете, это не сработало. Это всегда дает BadImageFormat
Исключение.
Я удостоверился, что оба, c # appilcation и c ++ dll, скомпилированы как 64-битные. И я попробовал 2 различных компилятора для библиотеки C ++. MinGW64 и компилятор, который использует Visual Studio (я понятия не имею, какой компилятор использует Visual Studio)
Я попробовал то же самое на Linux, используя g ++, что по некоторым причинам сработало.
Если кто-нибудь может помочь мне запустить эту вещь, я был бы очень рад ..
Это исходный код, который я использовал для C #
[DllImport(@"libuntitled_test.dll", EntryPoint = "hello")]
static extern void Hello();
[DllImport(@"libuntitled_test.dll", EntryPoint = "hello2")]
static extern void Hello2();
static void Main(string[] args)
{
Hello2();
Console.ReadLine();
Hello();
Console.ReadLine();
}
И это с ++ один (MinGW)
// libary.cpp
#include "library.h"
#include <iostream>
EXTERN void hello() {
std::cout << "Hello, World!" << std::endl;
}
EXTERN int hello2() {
return 7098;
}
также заголовочный файл
//libary.h
#include <iostream>
#define EXTERN extern "C" __declspec(dllexport)
EXTERN void hello();
EXTERN int hello2();
и Cmake
cmake_minimum_required(VERSION 3.10)
project(untitled_test)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS -m64)
add_library(untitled_test SHARED library.cpp library.h)
Я надеюсь, что дал вам всю необходимую информацию.
Задача ещё не решена.
Других решений пока нет …