编译为64位时core.sys.windows.winuser导入的链接器错误

时间:2018-07-01 00:45:36

标签: windows winapi d user32 dmd

使用DMD -m64进行编译时出现链接器错误,我没有得到32位。

我正在从ShowWindow导入core.sys.windows.winuser,我得到以下信息:

C:\D\dmd2\windows\bin\lld-link.exe: warning: main.obj: undefined symbol: ShowWindow
error: link failed
Error: linker exited with status 1

我的编译器命令为dmd main.d -m64 -i -O -release -inline -boundscheck=off

除了认为我正在呼叫ShowWindow之外,我认为源代码不会有所作为。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

感谢亚当的评论(老实说,他在每个地方都很有用),解决方案是添加pragma(lib, "user32")

但是在那之后我遇到libcurl的更多问题时,我最终只是转而使用ldc2,这是基于LLVM的D编译器。我认为这要好得多,它减少了许多与“缺少东西”有关的错误。

我似乎可以与独立的Visual Studio Build Tools无缝协作,不像DMD不能立即使用我的环境设置。如果我让安装程序来管理VS Build Tools的安装,可能会有点,我不希望随Visual Studio的完整安装一起带来如此big肿的软件包。