我尝试使用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上完美编译......
有什么想法吗?
提前感谢您的帮助
答案 0 :(得分:0)
我看到了你的问题可能的原因:编译器没有找到库文件,你可以通过在.pro文件中添加保存库的完整路径来解决这个问题,我在这里看到的就是你如果正在编译调试或发布,有不同的路径来搜索库,你确定在这两个地方都有正确的库吗? 这将是您的专业文件中放置内容的示例:
LIBS + = -L $$ OUT_PWD /../../../projects / mylibs / release /