如何使用Win32 API将字符串传递给DLL?

时间:2011-05-02 22:43:30

标签: c winapi mingw rundll32

我正在尝试将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传递参数吗?

如果我没有参数,它可以正常工作。

1 个答案:

答案 0 :(得分:2)

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