Qt链接库(C++与目标C混合)错误


  1. 我正在使用Qt来构建UI应用程序
  2. Qt应用程序应该链接到一个静态库(.a文件)
  3. 该库由C++和Objective C(*.mm)文件编写
  4. 我设置了Qt项目文件并链接了静态库,但Qt Creator总是会出现链接错误,而错误与静态库中*.mm上的函数实现有关。

问题:
Qt应用程序如何链接库?这是一个纯粹的C++应用程序(Qt应用程序)链接到静态库,其中C++和ObjectiveC混合(.a文件)。


更新:链接错误

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_QTCaptureDevice", referenced from:
  objc-class-ref in libmyapi.a(myTestFunction_mac.o)
  "_QTMediaTypeVideo", referenced from:
      myTestFunction() in myapi.a(myTestFunction_mac.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [myApp.app/Contents/MacOS/myApp] Error 1
14:38:06: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project myApp (kit: Desktop Qt 5.1.0 clang 64bit)
  1. Qt5.1带有clang,支持C++11
  2. 静态库myapi.a,由Xcode4.6构建,没有错误。只有一个文件是myTestFunction_mac,使用QTKit框架
  3. myApp链接myapi.a,但myTestFunction_mac.mm植入文件存在链接错误

您需要将QTKit框架添加到应用程序目标中。

Xcode 4
单击左侧浏览器窗格中的项目
单击"目标"下的目标
单击"摘要"选项卡。
如果未展开,请展开"链接的框架和库"
单击+图标,在搜索框中键入QTKit,然后添加QTKit。

Xcode 3
右键单击项目
选择添加-->现有框架
添加QTkit。

最新更新