我使用dotnet framework v4.0
构建了dll
。库中的代码如下
`extern "C"
{
__declspec(dllexport) int add(int a,int b)
{
printf("Unmanaged add()");
return a+b;
}
__declspec(dllexport) int subtract(int a,int b)
{
printf("Unmanaged subtract()");
return a-b;
}
}`
现在我需要在中引用这个dll。Net Core Application。为此,我制作了包含此dll的Nuget
包,并最终安装了此nuget
包。
所引用的dll
在project.json
文件的依赖项部分中是相当可见的。
{
[DllImport("vs2010_nativelib.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int subtract(int a, int b);`
[DllImport("vs2010_nativelib.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int add(int a, int b);
public static void Main(string[] args)
{
Console.WriteLine("Inside Managed Dot Net Core 1.0 Application ");
Console.WriteLine("Calling Unamanged add : {0}", add(10, 20));
Console.WriteLine("Calling Unamanged subtract : {0}", subtract(30, 20));
Console.ReadLine();
}
}
在运行此应用程序时,当它调用非托管dll的add(10, 20)
函数时,它抛出BadImageFormatException
并带有此消息An attempt was made to load a program with an incorrect format.
那么问题在哪里呢?是否。net Core不能使用这些类型的库或我缺少的其他东西?
确保本机代码dll和。net核心应用程序dll与您的机器配置(例如:64位)的平台相同。