【问题标题】:Linking flags order using QMAKE in QTCreator .pro file在 QTCreator .pro 文件中使用 QMAKE 链接标志顺序
【发布时间】: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 之前在链接中?
  • 可能不会,但你为什么想要它?除了链接器库,顺序真的无关紧要。如果您显示 completeunedited 错误消息,将更容易分辨出什么是错误的。您很可能缺少目标文件或库,因为您显示的错误消息的一部分是 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


【解决方案1】:

类似的解决方案: Referencing C functions in static library from C++

要从 C++ 实例化 C lib,您需要用 extern "C" { } 包围 c 标头

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    相关资源
    最近更新 更多