运行C++;具有rundll32的DLL-缺少条目 < >我尝试使用Rundll来测试和运行我的C++ DLL,我遵循了这里的指南和其他站点,入口点看起来是这样的: __declspec(dllexport) void CALLBACK entry(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow) { //do stuff } EXPORTS entry = entry

运行C++;具有rundll32的DLL-缺少条目 < >我尝试使用Rundll来测试和运行我的C++ DLL,我遵循了这里的指南和其他站点,入口点看起来是这样的: __declspec(dllexport) void CALLBACK entry(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow) { //do stuff } EXPORTS entry = entry,c++,dll,rundll32,C++,Dll,Rundll32,但是rundll进程会提示我一个错误消息框,上面写着“C:\path\to\DLL中的错误缺少条目:条目” 尝试执行命令:“rundll32 C:\path\to\DLL,entry”。您可以通过在DLL上运行Dumpbin.exe/exports进行双重检查,以查看实际导出的名称。正如错误消息告诉您的那样,现在不是条目 您需要前缀外部“C”到声明,禁用C++名称的修改。 对于64位可执行文件来说已经足够好了,但这会将其转换为_entry@16如果这是一个32位的DLL,仍然不足以让rundll

但是rundll进程会提示我一个错误消息框,上面写着“C:\path\to\DLL中的错误缺少条目:条目”


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

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

您需要前缀<代码>外部“C”<代码>到声明,禁用C++名称的修改。

对于64位可执行文件来说已经足够好了,但这会将其转换为
_entry@16
如果这是一个32位的DLL,仍然不足以让rundll32满意。使用项目+添加新项、代码节点,选择“模块定义文件(.def)”项模板。让它看起来像这样:

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