这可能会被标记为BadImageFormatException When Calling .dll Built from C++ Project In NET Core的副本,但原始对我没有任何帮助,没有解决方案
在过去的2个小时里,我试图让c#(。net core)和c ++本机dll一起工作。
好吧,正如你可能已经知道的那样,它没有用。它始终提供BadImageFormat
例外。
我确保将c#appilcation和c ++ dll编译为64位。我为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)
我希望我能为您提供所需的所有信息。