运行 带有 rundll32 的 C++ DLL - 缺少条目

Running C++ DLL with rundll32 - Missing entry

所以我正在尝试使用 运行dll 来测试和 运行 我的 C++ 编写的 DLL,并且我遵循了此处和其他站点上的指南,入口点如下所示:

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

但是 运行dll 进程提示我一个错误消息框说 "Error in C:\path\to\DLL Missing entry: entry"

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

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

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

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

EXPORTS
entry = entry