Я пытался экспортировать простую тестовую функцию для dll для работы с приложением (fyi: mIRC), который определяет соглашение о вызове как:
int __stdcall test_func(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)
Теперь, чтобы вызвать это из приложения, я бы использовал test_func, но я заметил, что из-за изменения имени это не так просто, как я думал.
В рамках подобных тем я пришел к пониманию, что использование extern "C" в сочетании с __ declspec (dllexport) - это эквивалентный (несколько) метод удаления mangling к определениям модулей (.def). Однако при использовании метода extern/dllexport моя функция (в качестве примера) всегда _test_func @numbers, тогда как .def удаляет все искажения, как требуется для использования с приложением, которое мне нужно экспортировать.
Может кто-нибудь объяснить, почему это так? Мне просто интересно узнать об этих двух методах. Спасибо!