C++ で以前に作成された DLL と対話する C# を配置するプロジェクトに取り組んでいます。以下のコードは、必要な関数をエクスポートする方法を示しています。
extern "C" __declspec(dllexport) int iterateAndTest(int testSize, char* testHash){
CUDADLL dll;
int ret = dll.iterateAndTest(testSize, testHash);
return ret;
}
以下のコードは、C# で関数を宣言する方法を示しています。
[DllImport("C:\\Users\\BrunoBraga\\Documents\\Visual Studio 2012\\Projects\\CUDADLL\\Debug\\CUDADLL.dll")]
public static extern int iterateAndTest(int testSize, string testHash);
問題は、dll 関数が何も返さないことです。実際、一度呼び出された dll は C# に戻ることはなく、プログラムは単純に終了します。
正しいコードを提供しているかどうかはわかりませんが、欠落しているdllについて何かがあると思います。
返信が遅れて申し訳ありません。2 つの問題がありました。new がなくても内部フィールドにアクセスできたので、これができると思いました。;
2-プログラムは管理者で実行する必要があります。そうしないと、クラッシュが発生します。
みんなありがとう。