ac#Windowsサービスからcpp dll関数を呼び出そうとしていますが、呼び出すたびに、サービスはすぐに停止し、エラーや例外をスローせず、イベントログは空になります。また、別のアセンブリ(サービス外)を介してPInvoke呼び出しを実行しようとしましたが、機能します。サービスはx86でコンパイルされています(アセンブリと同じ)。
何か案は?
以下は私のコードです:
[DllImport(@"C:\Test.dll",
EntryPoint = @"TestFn",
SetLastError = true,
CallingConvention = CallingConvention.Cdecl)]
private static extern int TestCppDll();
単に呼び出すだけでimを呼び出すTestCppDll();
これで私の問題が修正されました:
cppコードのTestFnfnをから変更しました
extern "C" __declspec(dllexport) int
TestFn()
{
return 1;
}
に:
extern "C" __declspec(dllexport) int __stdcall
TestFn()
{
return 1;
}
次に、C#の呼び出し規約を変更して、Cdeclの代わりにstdを使用しました