C++ 在Linux上构建Qt共享库
我遵循了下面链接中的说明(以及这里的一些线程) 我正在成功地构建一个项目,但我只看到编译后的常用对象和最终二进制文件。一点也不像图书馆 想法 MyWidget_global.hC++ 在Linux上构建Qt共享库,c++,linux,qt,shared-libraries,C++,Linux,Qt,Shared Libraries,我遵循了下面链接中的说明(以及这里的一些线程) 我正在成功地构建一个项目,但我只看到编译后的常用对象和最终二进制文件。一点也不像图书馆 想法 MyWidget_global.h #ifndef MY_WIDGET_GLOBAL_H #define MY_WIDGET_GLOBAL_H #include <QtCore/qglobal.h> #if defined(MY_WIDGET_LIBRARY) # define MY_WIDGET_EXPORT Q_DECL_EXPOR
#ifndef MY_WIDGET_GLOBAL_H
#define MY_WIDGET_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(MY_WIDGET_LIBRARY)
# define MY_WIDGET_EXPORT Q_DECL_EXPORT
#else
# define MY_WIDGET_IMPORT Q_DECL_IMPORT
#endif
#endif
最后是实际类的标题
#ifndef MY_WIDGET_H
#define MY_WIDGET_H
#include "MyWidget_global.h"
class MY_WIDGET_EXPORT MyWidget
{
public:
MyWidget();
// Snip
};
#endif
Qt附带了一系列预定义的项目模板。直接从文档中获取: 模板变量用于定义将生成的项目类型如果项目文件中未声明此,qmake假定应构建应用程序,并将为此生成适当的Makefile(或等效文件) 因此,在您的例子中,QMake假设应用程序是要构建的。添加正确的模板可以解决这个问题,即
TEMPLATE = lib
这就是解决办法。实际上,lib
是为库创建输出生成文件的正确模板
有关库的正确创建及其添加到项目中的信息,请参阅。您的
.pro
文件中是否有TEMPLATE=lib
?我绝对没有。我周末下班回家,但周一第一件事就是试试。谢谢。:)就这样。谢谢请随便回答,我会投赞成票的。谢谢。我已经看了那份文件,但没有看到。同样值得注意的是,当我想在Windows端链接一个静态库时,它必须是TEMPLATE=staticlib(它同时构建.dll和.a库)。
TEMPLATE = lib