C++ 在Linux上构建Qt共享库

C++ 在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

我遵循了下面链接中的说明(以及这里的一些线程)

我正在成功地构建一个项目,但我只看到编译后的常用对象和最终二进制文件。一点也不像图书馆

想法

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_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