我试图使用此源将Rundll32的字符串(或char *)传递给使用(用MinGW)构建的DLL:

#include <windows.h>

__declspec( dllexport ) int hello(LPSTR content) {

  MessageBox( NULL, content, "Message", MB_OK );
  return 0;

}


运行此程序时,我会随机崩溃。这就是我的运行方式。

C:\workspace>c:\MinGW\bin\gdb.exe rundll32 -ex "run program1.dll,hello test"


我尝试在hello()处设置断点,看来“内容”是相当随机的。我是否以错误的方式从rundll32传递了参数?

如果我没有论点,那就很好用。

最佳答案

需要以非常特定的方式声明rundll32入口点。请查看this article,其中说明了如何做。我注意到的一件事是,对于名为“ EntryPoint”的符号,传递给rundll32的函数名称对于32位DLL应该为“ _EntryPoint @ 16”,对于64位DLL则仅为“ EntryPoint”。

10-08 01:32