Вероятно, это будет помечено как дубликат 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();
}
И это c ++ one (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)
Я надеюсь, что дал вам всю необходимую информацию.