#ifndef SHAREDLIB_H #define SHAREDLIB_H #include "sharedlib_global.h" SHAREDLIBSHARED_EXPORT int subtract(int x, int y); class SHAREDLIBSHARED_EXPORT SharedLib public: SharedLib(); int add(int x, int y); }; #endif // SHAREDLIB_H sharedlib.cpp 内容如下: #include "sharedlib.h" i...
新建文件或项目->选择 Library 和 c++ 库->选择共享库->下一步(工程名为 sharedlib) 生成的目录结构如图: 修改sharedlib.h 中的代码: // sharedlib.h#ifndef SHAREDLIB_H #define SHAREDLIB_H#include "sharedlib_global.h" class SHAREDLIBSHARED_EXPORT Sharedlib// 导出类, 客户端可直接加载{ public: ...
MYSAHREDLIBSHARED_EXPORT符号用于替换Qt的Q_DECL_EXPORT宏或Q_DECL_IMPORT宏(一个共享库导出给用户使用的类、符号、函数等都需要用宏Q_DECL_EXPORT来定义导出,一个使用共享库的应用程序都需要通过Q_DECL_IMPORT导入共享库里的可用对象) #include <QtCore/qglobal.h> #if defined(MYSAHREDLIB_LIBRARY) # define...
SHAREDLIBRARYSHARED_EXPORT int add(int a, int b); //自定义的外部函数 } #endif // SHAREDLIBRARY_Hsharedlibrary.cpp: #include "sharedlibrary.h" #include <QPushButton> #include <QMessageBox> #include <QTime> #include <QPalette> SharedLibrary::SharedLibrary(QWidget *parent):QWidget(parent)...
在Serial前面就跟着SERIALSHARED_EXPORT。就相当于把Serial导出。所谓的导出,就是将其编译成一个dll文件后,其他的文件可以使用这个导出类。 所以如果自己定义的函数不在类里面,就要单独的导出。 也可以用extern "C" { }把里面的函数全部包含进去。 2.调用C++库 ...
# define WIDGETLIBSHARED_EXPORT Q_DECL_IMPORT #endif #endif // WIDGETLIB_GLOBAL_H 之后,点击下方构建按钮即可生成对应的dll文件 不过在此之前,我们还需要在界面上添加以下组件,以验证封装成DLL之后库的可用性。 我们在这个界面上添加一个按钮,并给这个按钮添加对应的槽函数 ...
MYDLLSHARED_EXPORT int __stdcall cpp_stdcall_sub(int x, int y); 可以看出,编译器对namespace里的函数名做了特殊的处理。 C/C++和_cdecl/__stdcall下的导出函数名 1)调用协议常用场合 __stdcall:Windows API默认的函数调用协议。 __cdecl:C/C++默认的函数调用协议。
void updateBackground(); int subtract(int a, int b); private slots: void onClicked(); }; extern "C" { SHAREDLIBRARYSHARED_EXPORT SharedLibrary* getSharedLibrary(); //获取类SharedLibrary对象 SHAREDLIBRARYSHARED_EXPORT int add(int a, int b); //自定义的外部函数 } #endif // SHAREDLIBRAR...
这里什么也没做只是把SLDSHARED_EXPORT加上了 好了就这样,我们构建一下就会在MyDebug文件夹里生成我们的dll 2.怎么使用动态链接库 新建一个Qt WidgetsApplication项目 在.pro文件里修改和上边一样加上 DESTDIR =..\MyDebug 再点击项目把shadow build 去掉 ...
#ifndef LOGGER_H#define LOGGER_H#include <QObject>#include "logger_global.h"enum business_state{start,running,finsish};class QJsonObject;class LogQt;/*** @class Logger logger.h* @brief 日志客户端/服务端* @note 根据日志配置文件中配置启动为客户端或服务端*/class LOGGERSHARED_EXPORT MyLogger...