2016-04-13 12 views
2

私はC#WPFを使用しています。
私は次のようにC++テストDLLを持っている:
.H:
C#からC++ DLLを呼び出す際に不正な形式の例外が発生しました。

extern "C" __delspec(dllexport) void TestMethod(); 

.cppファイル:

extern "C" 
{ 
    __delspec(dllexport) void TestMethod() 
    { 
     MessageBox(0, L"Test", L"Test", MB_ICONINFORMATION); 
    } 
} 

C#コード:

[DllImport("DllTest.dll", EntryPoint = "TestMethod")] 
public static extern void TestMethod(); 

とI私はTestMethodを呼び出そうとしていますが、例外があります:

an attempt was made to load a program with an incorrect format 

私は間違っていますか?
ありがとうございます!


+2

私は '[DllImport(" DllTest.dll "、CallingConvention = CallingConvention.Cdecl)]'のようなものを持っています。呼び出し規約を指定すると役立ちますか? – ntohl

答えて

7

これは32bit/ 64 bit問題のようです。あなたのC + +のDLLとC#の呼び出しアセンブリのように、さまざまなプラットフォームのターゲット用に構築されているようだ。同じプラットフォーム(x86またはx64のいずれか)でコンパイルしてから、関数を呼び出してみてください。

+0

ありがとう!!!私は1つ以上の関数を持っている場合、代わりに[DllImport( "DllTest.dll"、EntryPoint = "TestMethod")]を置き換える必要がある場合、別の質問で投稿を編集しますか? – Evyatar

+1

@エヴァイアー最高のポストそれは別途質問として。私たちは質問ごとに1つの質問を好む:) – CompuChip

+0

@CompuChip、ええ..私は新しい質問をする:P – Evyatar

関連する問題