0

我正在尝试将一个字符串(或 char*)从 Rundll32 传递给使用此源构建的 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 传递参数?

如果我没有论据,它工作得很好。

4

1 回答 1

2

rundll32 入口点需要以非常具体的方式声明。查看这篇文章,它解释了该怎么做。我注意到的一件事是,对于名为“EntryPoint”的符号,传递给 rundll32 的函数名对于 32 位 DLL 应该是“_EntryPoint@16”,对于 64 位 DLL 应该是“EntryPoint”。

于 2011-05-02T22:49:15.947 回答