我正在尝试将Rundll32中的字符串(或char *)传递给使用此源构建的DLL(使用MinGW):
#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传递参数吗?
如果我没有参数,它可以正常工作。
答案 0 :(得分:2)
rundll32入口点需要以非常具体的方式声明。查看this article,其中说明了该怎么做。我注意到的一件事是,对于名为“EntryPoint”的符号,传递给rundll32的函数名称对于32位DLL应该是“_EntryPoint @ 16”,对于64位DLL应该是“EntryPoint”。