• 6224阅读
  • 3回复

[提问]软件发布和QextSerialPort静态编译的问题 [复制链接]

上一主题 下一主题
离线tumblm
 
只看楼主 倒序阅读 楼主  发表于: 2009-09-30
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2011-01-07) —
开发环境
Eclipse+MinGW+QT4.5
static compile
这一步没有错,我发布了其他小程序,没有问题

目标软件是一个接受串口信息并且实时显示

我把QextSerialPort也编译成了静态库
libqextserialport.a
qextserialport.prl
但是没有lib文件,不知道对不对

我的.pro文件,
  1. TEMPLATE = app
  2. TARGET = test
  3. QT        += core gui
  4. HEADERS   += test.h
  5. SOURCES   += main.cpp \
  6.     test.cpp
  7. FORMS     += test.ui  
  8. INCLUDEPATH += G:\Qt\4.5.2\include\qextserialport
  9. LIBS          += -LG:\Qt\4.5.2\lib\qextserialport -lqextserialport
  10. win32:DEFINES  = _TTY_WIN_ QWT_DLL QT_DLL


但是编译的时候总是出来一大堆这样的信息,

release/test.o(.text+0x9d5):test.cpp: undefined reference to `_imp___ZN7QString4freeEPNS_4DataE'
release/test.o(.text+0xa04):test.cpp: undefined reference to `_imp___ZN7QString4freeEPNS_4DataE'
release/test.o(.text+0xa4c):test.cpp: undefined reference to `_imp___ZN7QString4freeEPNS_4DataE'
release/test.o(.text$_ZN12Ui_testClass7setupUiEP7QWidget[Ui_testClass::setupUi(QWidget*)]+0x5d):test.cpp: undefined reference to `_imp___ZNK7QObject10objectNameEv'
release/test.o(.text$_ZN12Ui_testClass7setupUiEP7QWidget[Ui_testClass::setupUi(QWidget*)]+0xbc):test.cpp: undefined reference to `_imp___ZN7QString8fromUtf8EPKci'
release/test.o(.text$_ZN12Ui_testClass7setupUiEP7QWidget[Ui_testClass::setupUi(QWidget*)]+0xe8):test.cpp: undefined reference to `_imp___ZN7QObject13setObjectNameERK7QString'


最后报错如下:

release/test.o(.text$_ZN5QListI7QStringE6appendERKS0_[QList<QString>::append(QString const&)]+0x12a):test.cpp: undefined reference to `_imp___ZN7QString4freeEPNS_4DataE'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\test.exe] Error 1
mingw32-make: *** [release] Error 2


不知道是我哪里设置错了,还是QextSerialPort不能被静态发布在软件里??
麻烦大家不吝赐教!多谢!!
离线tumblm
只看该作者 1楼 发表于: 2009-10-06
up..
离线rqzrqh

只看该作者 2楼 发表于: 2009-10-06
我想可能是因为你没有在指定这是静态编译,默认会去找动态库,但是你又没有动态库,是成功的,但是链接的时候会因为找不到函数的具体实现而出错
离线tumblm
只看该作者 3楼 发表于: 2009-10-06
多谢,你说的库是指QextSerialPor么?
怎么指定静态库,下面的语句应该怎么改?
INCLUDEPATH += G:\Qt\4.5.2\include\qextserialport
LIBS          += -LG:\Qt\4.5.2\lib\qextserialport -lqextserialport
win32:DEFINES  = _TTY_WIN_ QWT_DLL QT_DLL
快速回复
限100 字节
 
上一个 下一个