在Linux上构建Qt共享库
Building Qt Shared library on Linux
我已经按照以下链接中的说明进行操作(以及此处的一些线程)http://qt-project.org/doc/qt-4.8/sharedlibrary.html
我正在成功构建一个项目,但我只看到编译后的常用对象和最终二进制文件。 没有什么看起来像图书馆的东西。
想法?
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
项目文件
DEFINES += MY_WIDGET_LIBRARY
# Input
HEADERS += MyWidget_global.h
MyWidget.h
# Input
SOURCES += main.cpp
MyWidget.cpp
最后是实际类的标头
#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
是为库创建输出生成文件的正确模板。
有关库的正确创建及其添加到项目中的信息,请参阅此处。
相关文章:
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 具有Qt事件循环的可移植通用共享库设置
- 在QT中的两个窗口之间共享websocket连接
- Qt - 共享同一数据库的应用程序
- Qt 创建器:将库移动到 subdir 后无法打开共享对象文件
- 在Emscripten和Qt之间共享OpenGL代码
- Qt项目与自定义共享库交叉编译Qt
- 交叉编译 qt:加载共享库时出错
- QT如何在窗帘后面共享开放环境
- Qt应用程序在运行时找不到共享库
- 尝试使用共享库部署QT应用程序时出错
- 加载Qt共享库时,Qt小部件不会显示
- dynamic_cast over共享库在使用clang编译的Android上的Qt中失败
- 在Xamarin.Forms和QT项目之间共享常见代码
- 将共享库添加到Qt .pro文件中
- VC++和Qt应用程序之间使用共享内存进行通信
- 交叉编译用于树莓派的QT应用程序-无法打开共享对象文件
- Qt 隐式共享类 - 调用函数传递并按值返回的成本很高
- 如何为父级声明子级是Qt中的共享指针
- 使用共享库在 Ubuntu 上部署 Qt 应用程序二进制文件