3

如何为 Windows 平台制作 QextSerialPort 的静态库以与 Qt 4.8.5 一起使用

我不明白如何修改 .pro 或 .pri 文件来执行此操作。(.prf 文件不断重新生成)。

所以我尝试修改生成的 .vcproj 文件以进行静态构建,并删除了一些定义,但我仍然收到如下警告:

qextserialport.lib(qextserialport.obj) : 警告 LNK4006: "public: __thiscall QextSerialPort::QextSerialPort(class QString const &,enum QextSerialPort::QueryMode,class QObject *)" (??0QextSerialPort@@QAE@ABVQString@@W4QueryMode@ 0@PAVQObject@@@Z) 已经在 qextserialportd1.lib(qextserialportd1.dll) 中定义;第二个定义被忽略

并在运行时得到“系统错误:程序无法启动,因为您的计算机缺少 qextserailportd1.dll”。这当然是真的,因为我正在尝试使用 .lib 进行静态构建

那么我该如何正确地进行静态构建呢?

4

2 回答 2

1

无需构建 QextSerialPort 的静态库。您可以简单地在应用程序中使用源代码。只需将它的.pri文件包含在您的.pro文件中:

include(Path/To/qextserialport.pri)

或者将 QextSerialPort 源代码从src目录复制到您的应用程序目录,并将以下行添加到您的项目文件中:

include(qextserialport.pri)

现在您可以包含头文件:

#include "qextserialport.h"

并使用图书馆:

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

无需链接库或放置 dll 进行部署。

于 2015-01-05T19:04:49.097 回答
0

感谢内贾特的回复。非常清楚。

此外,对于那些追随我的脚步的人来说,这对我来说是一个阅读手册的案例。答案在: https ://code.google.com/p/qextserialport/wiki/QextSerialPort_1_2_RC

它明确地说要添加 CONFIG += qesp_static

到 .pro 文件。这也有效。

于 2015-01-05T19:13:06.350 回答