Функция C ++ экспортируется в dll и загружается из C # - PullRequest
1 голос
/ 28 января 2011

У меня в C ++:

void __declspec (dllexport) foo (HWND wnd)

И в C #

[DllImport("MyDll.dll", CharSet = CharSet.Ansi)]
public static extern void foo(IntPtr wnd);

Когда я пытаюсь вызвать его, у меня появляется эта ошибка - Дополнительная информация: Невозможно найти точку входа с именем 'foo' в DLL.Я попытался проверить DLL, и у меня есть функция со следующим определением:

Undecorated C ++ Функция: void cdecl foo (struct HWND *)

Я искал на несколькихфорумы и кажется, что это правильный способ сделать это ... Знаете ли вы, почему у меня эта ошибка во время выполнения?

1 Ответ

4 голосов
/ 28 января 2011

Вам необходимо отключить искажение имен в C ++.Объявите свою собственную функцию следующим образом:

extern "C" __declspec(dllexport) void foo(HWND wnd)

Вы также можете использовать утилиту dumpbin.exe для просмотра экспорта DLL.

...