在dotnet core中使用带有本地代码的动态库(使用framework v4.0构建)



我使用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包。

所引用的dllproject.json文件的依赖项部分中是相当可见的。

现在是。Net Core Application是这样的
{
        [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位)的平台相同。

相关内容

  • 没有找到相关文章

最新更新