我已加入windows.h
。如果我只是评论HWND
,HDC
,HBITMAP
,GetBitmapBits()
等,它甚至可以正常运行。我想我需要包含适当的LIB? LIB包含哪些内容?是-lgdi32
??
错误消息: :: error: collect2: ld returned 1 exit status
EDIT
添加LIBS += -lgdi32
后,没有链接器错误,它成功编译。所以它解决了我想!!!!或者是吗?
答案 0 :(得分:2)
即使你有一个编辑问题的解决方案,我认为说明如何在将来修复这些问题可能会有用。
当链接器发出错误时,这可能意味着您正在尝试引用一段无法找到的可执行代码。在您引用的行之上应该存在一系列错误,指出哪些特定函数导致了问题,例如:
foo.obj:错误LNK2019:未解析的外部符号_GetBitmapBits @ 12在函数中引用...
您的特定链接器的输出可能略有不同。它可能包括“未解决的外部”一词。这些错误是@ Friend-Pal实际要求的错误。
当您获得未解析的外部引用时,可以通过链接到相应的库来修复它。要确定要包含哪个函数库,请查看文档。例如,底部有GetBitmapBits个州的文档:
支持的最低客户端:Windows 2000 Professional
支持的最低服务器:Windows 2000 Server
标题:Wingdi.h(包括Windows.h)
图书馆:Gdi32.lib
DLL:Gdi32.dll
添加库引用的方法取决于您使用的特定链接器。在您的情况下,根据您对问题的修改,-lgdi32
库中应该gdi32.lib
进行链接。
重复此过程,直到所有参考文献都得到解决。
数据类型(HWND
,HDC
,HBITMAP
等)只需要相应的头文件;它们没有与之关联的任何实际可执行代码,因此它们不会影响链接器。
答案 1 :(得分:0)
除了Tadmas关于查找MSDN以查看所需库的答案之外,在使用Qt时,您可以定义库而无需更改链接器标志等。
如果您使用的是Microsoft编译器,那么将LIBS += Gdi32.lib
行添加到.pro
文件就足够了。完成!
如果您使用的是GCC,则应提供lib文件的完整路径,例如LIBS += "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib/Gdi32.lib"
。
如果您的项目同时针对32位和64位GCC构建(并且您已在Windows上构建了带有64位GCC的Qt),则应在.pro文件中使用条件范围determine if you are building for 32-bit or 64-bit并提供64位构建中64位lib文件的路径。 e.g:
win32-g++:!contains(QMAKE_HOST.arch, x86_64) {
LIBS += "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib/Gdi32.lib"
} else {
LIBS += "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib/x64/Gdi32.lib"
}