我试图为 dll 导出一个简单的测试函数,以便与将调用约定指定为的应用程序(仅供参考:mIRC)一起使用:
int __stdcall test_func(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)
现在,要从应用程序中调用它,我将使用test_func但我注意到由于名称修饰它并不像我想象的那么简单。
通过此处的类似主题,我了解到将extern "C"与__declspec(dllexport)结合使用是一种等效的(在某种程度上)消除对模块定义 (.def) 的修改的方法。但是,当使用 extern/dllexport 方法时,我的函数(例如)始终是_test_func@numbers而 .def 删除了所有需要与我需要导出到的应用程序一起使用的修改。
有人可以解释这是为什么吗?我只是对这两种方法感到好奇。谢谢!