2016-11-09 13 views
-1

私は、マネージドC++ DLL(MecDll)をx86から​​x64に移植します。 C#で テストコード:TEST.DLLでC#からx64 C++ DLLを呼び出すと、プロセスがハングする(更新)

[DllImport("test.dll"), System.Security.SuppressUnmanagedCodeSecurity] 
public static extern int getseven(); 
[DllImport("MecDll.dll"), System.Security.SuppressUnmanagedCodeSecurity] 
public static extern int getsevenmec(); 

Console.WriteLine("{0}" , getseven()); 
Console.WriteLine("{0}" , getsevenmec()); 

コード:

extern "C" 
{ 
__declspec(dllexport) int __stdcall getseven() { 
return 7; 
} 
} 

コードMecDll.dllに追加:

extern "C" 
{ 
__declspec(dllexport) int __stdcall getsevenmec() { 
return 8; 
} 
} 

私がテストを実行すると、私は7を得ますtest.dllから印刷され、プロセスは黒いウィンドウでハングするだけです。 プロセスエクスプローラで、dllがロードされているのがわかります。

テストC#コードは任意のCPUでコンパイルされ、DLLはx64でコンパイルされます。

アイデア?

+0

デバッガで実行しようとしましたか? – Ben

+0

私は、同じことが起こった、私は関数呼び出しでブレークポイントを置く、それは、ブレーク、私はF11を押して、何もなし –

+0

更新、DLLをC++コードから呼び出そうとしました。 –

答えて

0

これはコンストラクタ内でコンストラクタ内にコンストラクタ内にソケットと定義された負の数値の間に==があり、負の数値の前に(DWORD)を追加して問題を修正しました。 ありがとうBen

関連する問題