使用rundll32运行C++ DLL - 缺少条目

Tra*_*tal 2 c++ dll rundll32

所以我正在尝试使用rundll来测试和运行我的C++编写的DLL,我已经遵循了这里和其他网站上的指南,入口点如下所示:

__declspec(dllexport)  void CALLBACK entry(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

但rundll进程提示我一个错误消息框说"C:\ path\to\DLL Missing entry:entry"中的错误

尝试执行命令:"rundll32 C:\ path\to\DLL,entry".

Han*_*ant 7

您可以通过在DLL上运行Dumpbin.exe/exports来仔细检查以查看实际的导出名称.现在不是 entry,正如错误消息告诉你的那样.

您需要extern "C"在声明前添加前缀以禁用C++名称修改.

对于64位可执行文件来说已经足够了,但_entry@16如果这是一个32位的DLL,那么它就会变成这样,但仍然不足以让rundll32保持高兴.使用Project + Add New Item,Code node,选择"Module-Definition File(.def)"项模板.并使它看起来像这样:

EXPORTS
entry = entry
Run Code Online (Sandbox Code Playgroud)