2015-01-05 99 views
3

如何使QextSerialPort的靜態庫的Windows平臺使用了Qt 4.8.5Qt的QextSerialPort靜態庫

我不明白如何修改的.pro或.pri文件來做到這一點。 (.prf文件不斷重新生成)。

所以,我試圖修改得到的.vcproj文件,以使靜態生成,並刪除了一些定義,但我仍然得到警告信息,如:

qextserialport.lib(qextserialport.obj) : warning LNK4006: "public: __thiscall QextSerialPort::QextSerialPort(class QString const &,enum QextSerialPort::QueryMode,class QObject *)" ([email protected]@[email protected]@@[email protected]@[email protected]@@Z) already defined in qextserialportd1.lib(qextserialportd1.dll); second definition ignored

,並在運行時得到「系統錯誤:程序無法啓動,因爲計算機中缺少qextserailportd1.dll「。這當然是真的,因爲我試圖使用.lib來製作靜態內部版本。因此,如何正確執行靜態構建?

回答

1

沒有必要構建一個QextSerialPort的靜態庫。您可以簡單地在應用程序中使用源代碼。只是包括它的.pri文件在您.pro文件:

include(Path/To/qextserialport.pri) 

或者從src目錄複製QextSerialPort源代碼到你的應用程序目錄和下面的行添加到您的項目文件:

include(qextserialport.pri) 

現在你可以包括頭文件:

#include "qextserialport.h" 

而且使用的庫:

QextSerialPort * port = new QextSerialPort("COM1"); 
connect(port, SIGNAL(readyRead()), this, SLOT(onDataAvailable())); 
port->open(); 

沒有任何需要鏈接庫或將dll部署。

0

感謝Nejat的迴應。非常清楚。

另外,對於那些追隨我的腳步的人來說,這是一個閱讀手冊的例子。答案是: https://code.google.com/p/qextserialport/wiki/QextSerialPort_1_2_RC

說白了說要 CONFIG + = qesp_static

添加到.pro文件。這也適用。

+1

如果您認爲Nejat的答案有幫助並解決了您的問題,請考慮**接受**答案(通過點擊評分下的「V」)。相反,如果你認爲你自己的答案更好,你可以接受它。除非目前所有的答案都不夠好,否則你應該接受最好的答案,這樣人們纔會認爲你的問題得到了解決,而其他有相同問題的人則會將接受的答案作爲標準解決方案。 – Tay2510