0

我正在尝试调用 WinAPI 函数DialogBox()。在Microsoft 网站上,此函数被指定在 user32.dll 中。但是,当尝试通过将其声明为从 dll 导入的函数来导入此函数时,链接器告诉我它不存在。然后我尝试在 C:\Windows\System32\user32.dll 中使用依赖项walker 找到该函数,但该函数不存在。(我可以在那里看到所有其他花哨的函数文字。)这可能是什么原因,我该如何解决这个问题?

我正在使用 D 编程语言。标准库中的 windows 模块不会在 WinAPI 中导入完整的函数集。因此,我有时不得不手动导入东西。

4

1 回答 1

5

没错,没有这样的功能。从 WinUser32.h SDK 头文件:

#define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
#define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)

换句话说,C 预处理器将函数重命名为 DialogBoxParam。这是你唯一可以pinvoke的。只需像宏一样传递一个零。

于 2012-08-09T14:51:03.533 回答