0

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を使用しました

4

0 に答える 0