我在Qt中创建了一个小应用程序,用于向/从RabbitMQ代理发送和接收消息。
我创建了一个包含RabbitMQ发布者和使用者的库,后者又使用AMQP库here。
现在,每当我需要在应用程序中使用此库时,我需要复制两个.lib文件(qamqp,RabbitMQLib),以及大约10个头文件,然后将它们添加到我的.pro文件中(通过LIBS
和INCLUDEPATH
)。
我在C#中创建了一个类似的项目,但在那里我只需要两个.dll,就是这样。
我的问题是:我怎么能用Qt做同样的事情?只需要一个或两个.lib文件,它们将包含在需要它们的应用程序中,就是这样,不需要10个额外的头文件。
答案 0 :(得分:0)
你可以完全做到这一点。你实际上并不需要这些头文件(使用它们只是有用的) - 你真正需要的是声明你实际使用的所有对象(类型,函数,变量)。所以,如果你有很多标题,但是只使用一个函数,你只需要在实际使用它之前添加这个函数声明(可能是,添加__declspec(dllimport)
之类的东西,或者,如果使用的话Qt - Q_DECL_IMPORT
)。
但是,如果您面临的唯一问题是将所有这些文件添加到您的专业文件中,那么更好的解决方案是编写一个pri文件,如下所示:
<强> mylib.pri 强>
INCLUDEPATH += $$PWD/headers
DEPENDPATH += $$PWD/headers
HEADERS += \
$$PWD/headers/header1.h \
...
$$PWD/headers/header10.h
LIBS += -L$$PWD/libs -lqamqp -lRabbitMQLib
并将其包含在您的专业档案中:
include($$PATH_TO_COMMON_LIBS/mylib/mylib.pri)