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はこれらのタイプのライブラリを使用できませんか?
両方とも同じターゲットプラットフォーム用にコンパイルされていますか? 1つは64ビットになり、もう1つは32ビットになり、このエラーが発生します。 –
はい。これが問題でした。ありがとう – User1234