Я пытаюсь вызвать функцию cpp dll из службы Windows C #, но каждый раз, когда он делает вызов — служба немедленно останавливается и не отображает никаких ошибок или выдает исключения, а журналы событий пусты. Я также попытался сделать вызов PInvoke через другую сборку (вне службы), и это работает. Служба компилируется в x86 (так же, как сборка).
Есть идеи?
Ниже мой код:
[DllImport(@"C:\Test.dll",
EntryPoint = @"TestFn",
SetLastError = true,
CallingConvention = CallingConvention.Cdecl)]
private static extern int TestCppDll();
чтобы вызвать меня просто позвонив TestCppDll();
Это исправило мою проблему:
Я изменил TestFn fn в коде cpp из
extern "C" __declspec(dllexport) int
TestFn()
{
return 1;
}
Для того, чтобы:
extern "C" __declspec(dllexport) int __stdcall
TestFn()
{
return 1;
}
Затем я изменил соглашение о вызовах в c # для использования std вместо Cdecl
Задача ещё не решена.
Других решений пока нет …