Qt - 对...的未定义引用(Ubuntu 14.04 LTS 64位)

时间:2015-02-06 11:40:13

标签: c++ qt ubuntu

我尝试使用Qt5.3.1 MSVC2012,使用现在的Qt5.4 gcc 64位和Unbuntu 14.04 LTS编译我用Windows 7 64位制作的项目之一。

但是我有一些“未定义的引用”错误:

  

/ home / innocore / Software / CES_2015 / trunk / MainProgram /../ bin // libSmartphoneController.a(smartphonecontroller.o):在函数SmartphoneController::init()': /home/innocore/Software/CES_2015/trunk/bin/../LibSmartphoneController/smartphonecontroller.cpp:11: undefined reference to RemoteADBInterface :: RemoteADBInterface(QString,QString,int,QObject) *)”   /home/innocore/Software/CES_2015/trunk/bin/../LibSmartphoneController/smartphonecontroller.cpp:13:对RemoteADBInterface::newMessage(RemoteADBInterface::Message const&, QVariant const&)' /home/innocore/Software/CES_2015/trunk/MainProgram/../bin//libSmartphoneController.a(smartphonecontroller.o): In function的未定义引用QMetaObject :: Connection QObject :: connect(QtPrivate :: FunctionPointer :: Object const * ,void(RemoteADBInterface :: )(RemoteADBInterface :: Message const&,QVariant const&),QtPrivate :: FunctionPointer :: Object const ,void(SmartphoneController :: *)(RemoteADBInterface :: Message const&) ,QVariant const&),Qt :: ConnectionType)':   /opt/5.4/gcc_64/include/QtCore/qobject.h:239:对“RemoteADBInterface :: staticMetaObject”的未定义引用   collect2:错误:ld返回1退出状态

我的项目由一个exe和几个库组成,如libSmartphoneController.a或libRemoteADB.a。

所有库都正确编译并在正确的目录中创建。编译我的exe程序(MainProgram)时会出现问题。 在.pro中,我确信我包含了正确的依赖项:

unix:!macx {
CONFIG(release, release|debug) {
LIBS += -L$$PWD/../Lib/ -lAudioPlayer -lDisplay -lSWCom -lRemoteADB -lDMS -lTVRemote \
                        -lHDMIMixer -lSmartphoneController -lRemoteServer
}
CONFIG(debug, release|debug) {
LIBS += -L$$PWD/../bin/ -lAudioPlayer -lDisplay -lSWCom -lRemoteADB -lDMS -lTVRemote \
                        -lHDMIMixer -lSmartphoneController -lRemoteServer
} }

lib SmartphoneController也有两个依赖项:

SmartphoneController.pro中的

unix:!macx {
CONFIG(release, release|debug) {
LIBS += -L$$PWD/../Lib/ -lRemoteADB -lRemoteServer
}
CONFIG(debug, release|debug) {
LIBS += -L$$PWD/../bin/ -lRemoteADB -lRemoteServer
} }

问题是它没有在lib RemoteADB(contructor,signal readMessage ...)中找到某些函数的定义。我对所有其他库没有任何问题+它在Windows上完美编译......

有什么想法吗?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我看到了你的问题可能的原因:编译器没有找到库文件,你可以通过在.pro文件中添加保存库的完整路径来解决这个问题,我在这里看到的就是你如果正在编译调试或发布,有不同的路径来搜索库,你确定在这两个地方都有正确的库吗? 这将是您的专业文件中放置内容的示例:

LIBS + = -L $$ OUT_PWD /../../../projects / mylibs / release /