【发布时间】:2014-06-17 04:22:54
【问题描述】:
我来了
[...]main.cpp:9: error: undefined reference to [...]
我已经知道原因,但是我无法使用QMAKE_ 标志解决它。
我需要在-L之后和-o标志之前的链接中设置-I标志,像这样(我测试了一个手工制作的Makefile,没关系):
-L ./lib -lm [...其他库...] -I ./include -o ./bin/program
但是在QMAKE_LFLAGS 中设置-I,-I 标志位于g++ 命令的开头。
【问题讨论】:
-
编译器标志(包括像
-I这样的预处理器标志)通常排在第一位。在许多情况下,链接库必须在最后(或至少在任何源/目标文件之后)。 -
有一些方法可以强制 -I 标志在 -L 之后和 -o 之前在链接中?
-
可能不会,但你为什么想要它?除了链接器库,顺序真的无关紧要。如果您显示 complete 和 unedited 错误消息,将更容易分辨出什么是错误的。您很可能缺少目标文件或库,因为您显示的错误消息的一部分是 linker 错误,因此 C++ 编译器或预处理器标志无论如何都无关紧要。
-
我创建了一个测试“环境”。我用 C 标准编译了一个简单的数学库,用于计算最大和最小函数: * .c 文件:pastebin.com/mZqLyS2C * .h 文件:pastebin.com/NwnXRnF6 编译我的库的生成文件:pastebin.com/117u7K8N 现在,我有了 @987654333 @ 和
.h文件,我想将它链接到 C++ 项目中,在QT内。我的QT项目是一个简单的 Hello World 函数,它调用我在静态库中声明的 min 或 max 函数。而且我根本无法链接它..错误是: -
您的
.pro文件是什么样的?或者至少是链接器特定的行?
标签: c++ qt static-linking qmake