У меня наконец есть законченная C ++ DLL, но у меня возникают проблемы с вызовом из C #. Это определенно находит DLL, так как когда я удаляю ее из папки, я получаю другое исключение, «DLLNotFoundException». Полное описание ошибки: «Не удается найти точку входа с именем« GetNewInstance »в DLL« CComms.dll »». Все функции экспортируются в C ++, например,
__declspec(dllexport) DWORD __stdcall GetNewInstance();
и я называю это из C # примерно так
[DllImport("CComms.dll")]
private static extern uint GetNewInstance();
// ... and in main
uint inst = GetNewInstance();
Когда я использую «dumpbin / exports CComms.dll», я получаю странный вывод, я не уверен, искажается ли имя функции, и поэтому он не может найти точку входа
7 6 00002FB0 ?GetNewInstance@@YGKXZ = ?GetNewInstance@@YGKXZ (unsigned long
__stdcall GetNewInstance(void))
Я пытался использовать __cdecl вместо __stdcall, и получил тот же результат. Я так близок к тому, чтобы закончить с этим проектом, который я всюду надувал, надеюсь, это последнее на моем пути.
Спасибо.