2017-07-22 11 views
-1

C#アプリケーションでC++コードを使用したいので、C++でDLLを作成しました。 C++ DLLを初めて作成したので、私は 'test' dllを作成することから始めました。C#アプリケーションでC++ DLLを読み込めないのはなぜですか?

class DllTest { 
    [DllImport("Test.dll")] 
    public static extern void DisplayHelloFromDLL(); 

    public static void UseDll() { 
     DisplayHelloFromDLL(); 
    } 
} 

私は両方のアプリケーションを構築し、実行ファイルと同じフォルダにDLLを移動し、後:私は非常にシンプルなC#アプリケーションを作ったよりここでコード

extern "C" 
{ 
    __declspec(dllexport) void DisplayHelloFromDLL() 
    { 
     printf("Hello from DLL !\n"); 
    } 
} 

です。

未処理の例外:System.DllNotFoundException:DLL「Test.dllの」をロードできません:指定されたモジュールが見つかりませんでした

答えて

-1

あなたに私は実行可能ファイルを実行したときしかし、それは次のようなメッセージを示しました。 dllとexeの両方のターゲットプラットフォームをチェックする必要があります。

編集:ターゲットが異なる場合例外はあなたがDLLまたはその依存関係の1つが見つからないDllNotFoundExceptionを持つことになりますBadImageFormatException

です。

たとえば、Visual StudioでDLLのデバッグバージョンをコンパイルする場合、デバッグランタイム(IDEなしのマシンにはインストールされていない)が必要です。

あなたはこのツールはまた、あなたが標的化さシステム(のx86/x64の)を参照してくださいとエクスポート関数は(DLLにそれを使用するのに役立ちます、プログラムはあなたが表示されませんでしょうDependency Walker

を使用して、DLLの依存関係を確認することができます[DllImport]依存関係)

0

DLLをデバッグフォルダに格納する必要があります。 このコマンドを実行して、正しくエクスポートされたかどうかを確認してください。

dumpbin /exports Test.dll 
関連する問題