0
我試圖從Rundll32的傳遞字符串(或字符*)使用此源代碼構建(使用MinGW)一個DLL:如何使用Win32 API將字符串傳遞給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傳遞了參數?
它工作正常,如果我沒有參數。
是的,我早些時候嘗試過。雖然似乎沒有工作。我使用這個函數定義:「void CALLBACK hello(HWND hwnd,HINSTANCE hinst,LPSTR lpszCmdLine,int nCmdShow);」。當我打電話給rundll32.exe時,我收到一個消息框,裏面顯示「Missing Entry:_hello @ 16」。我在32位x86/Windows 7上。我讀到有一個名爲「depend.exe」的工具可以列出入口點,但我只能在WinXP上找到它。也許objdump可以做同樣的事情嗎? – 2011-05-02 23:02:34
[Dependency Walker](http://www.dependencywalker.com)在Windows 7上運行良好。 – 2011-05-02 23:07:40
好的,使用Dependency Walker我發現入口點被命名爲「hello @ 16」(不帶下劃線)。立即着手:) – 2011-05-02 23:11:59