2016-08-31 10 views
0

dllビルドでは、ドットネットframework v4.0を使用してビルドしました。ライブラリのコードがdotnetコアでネイティブコード(フレームワークv4.0でビルド)を使用した動的ライブラリを使用

`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を参照する必要があります。そのために私はこの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(); 
     } 
} 

のようなものです、今はそれがAn attempt was made to load a program with an incorrect format.

だからである。このメッセージを表示してBadImageFormatExceptionをスローアンマネージドDLLのadd(10, 20)関数を呼び出します問題 ? .NET Coreはこれらのタイプのライブラリを使用できませんか?

+0

両方とも同じターゲットプラットフォーム用にコンパイルされていますか? 1つは64ビットになり、もう1つは32ビットになり、このエラーが発生します。 –

+0

はい。これが問題でした。ありがとう – User1234

答えて

2

ネイティブコードdllと.Netコアアプリケーションdllが、マシン構成(例:64ビット)と同じプラットフォームであることを確認してください。

+0

はい...これが問題でした – User1234

関連する問題