当前位置: 首页 > news >正文

画册设计网站推荐WordPress产品录入

画册设计网站推荐,WordPress产品录入,wordpress知更鸟博客主题,哪里做百度网站qt中加载动态库有两种方式,一种跟在vs中一样,使用生成的 xxx.dll(linux下是 xxx.so)和xxx.h。第二种方式是使用QLibray动态加载,此种方式只需要dll文件(linux下是so文件)即可。 这里介绍使用QLibray的方式加载动态库&a…

qt中加载动态库有两种方式,一种跟在vs中一样,使用生成的 xxx.dll(linux下是 xxx.so)和xxx.h。第二种方式是使用QLibray动态加载,此种方式只需要dll文件(linux下是so文件)即可。

这里介绍使用QLibray的方式加载动态库:
一、新建一个工程Demo,作为动态库工程。
.pro文件配置如下:

QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets#生成库
TEMPLATE = lib
#shared 动态库
CONFIG += c++17 shared
#生成目录
DESTDIR = $$PWD/binunix{
#linux下生成无版本号链接的so文件
CONFIG+=plugin
}
#导出宏标识
DEFINES += DEMOLL_LIBRARY# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \demo.cpp \main.cpp \mainwindow.cppHEADERS += \demo.h \interface.h \mainwindow.h# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

1.创建接口文件,供库工程和测试工程使用

//interface.h
#ifndef INTERFACE_H
#define INTERFACE_Hclass Interface
{
public:Interface(){}virtual ~Interface(){}virtual void add(int x,int y)=0;
};#endif // INTERFACE_H

2.创建要导出的类 Demo,并继承Interface
除了导出Demo类外,还可以添加全局函数:g_print()

#ifndef DEMO_H
#define DEMO_H
#include <QObject>
#include "interface.h"//DEMOLL_LIBRARY 宏已经在pro文件中定义,所以是导出类/函数
#if defined(DEMOLL_LIBRARY)
# define MYAPI Q_DECL_EXPORT
#else
# define MYAPI Q_DECL_IMPORT
#endifclass MYAPI Demo :public Interface
{
public:Demo();virtual ~Demo();void add(int x,int y)override;
};extern "C"
{//类导出MYAPI Interface* createDemo();MYAPI void destoryDemo(Interface *obj);//全局函数导出MYAPI void g_print(QString str);
}#endif // DEMO_H
#include "demo.h"
#include <QDebug>Demo::Demo()
{
}
Demo::~Demo()
{
}
void Demo::add(int x, int y)
{qDebug()<<x+y;
}//类导出
MYAPI Interface* createDemo()
{return new Demo;
}
MYAPI void destoryDemo(Interface *obj)
{delete obj;
}
//全局函数导出
MYAPI void g_print(QString str)
{qDebug()<<__FUNCTION__<<"@:"<<str;
}

3.构建工程
注意:构建的时候选择MinGW,那么测试工程也要选择MinGW。并且32位或者64位要一一对应。
这里构建好之后,可以在bin目录下找到dll文件(linux下是.so文件),这个就是之后要用到的库文件。
在这里插入图片描述
二、新建一个测试工程test(带不带界面都可以)
1.将生成的dll文件和接口文件(interface.h)拷贝到测试工程.pro目录下,新建一个lib文件夹放进去。
在这里插入图片描述
在这里插入图片描述2.
2.在测试工程的.pro文件配置 动态库目录,和头文件目录

QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++17
#生成目录
DESTDIR =$$PWD/bin# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \mainwindow.cppHEADERS += \mainwindow.hFORMS += \mainwindow.ui#dll目录
win32{
LIBS += -L$$PWD/lib
}unix{
LIBS += -L$$PWD/lib
}
#头文件目录
INCLUDEPATH +=$$PWD/lib
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLibrary>
#include <QDebug>
#define lld qDebug()//引入接口头文件
#include "interface.h"
//函数指针
typedef Interface*(*CreateDemoFunc)();
typedef void(*DestoryDemoFunc)(Interface*);
typedef void(*GprintFunc)(QString str);MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//加载动态库QLibrary lib("testdll");if(!lib.load()){lld<<"加载dll失败";return;}//获取导出的函数指针CreateDemoFunc createDemo = (CreateDemoFunc)lib.resolve("createDemo");//createDemo是demo中要导出的DestoryDemoFunc destoryDemo = (DestoryDemoFunc)lib.resolve("destoryDemo");GprintFunc gPrint = (GprintFunc)lib.resolve("g_print");if(!createDemo||!destoryDemo||!gPrint){lld<<"解析函数失败";return;}//获取导出的类Interface *demo = createDemo();if(!demo){lld<<"创建失败";}demo->add(1,2);//全局函数gPrint("2333");
}

3.运行测试程序,可以在控制台看到输出
在这里插入图片描述
三、如果要在linux下测试,只需要拷贝对应的so文件即可
在这里插入图片描述

http://www.dtcms.com/a/592028.html

相关文章:

  • 长沙口碑好的做网站公司哪家好为什么公司网站打不开
  • 网站毕业设计论文模板南充市房产信息网官网
  • app网站与普通网站的区别公司二次开发好吗
  • 上海网站建设上海黄金宝安-网站建设信科网络
  • 聊城市网站建设公司阳江网站建设 公司
  • 网站运维公司有哪些如何寻找网站建设需求客户
  • 网站建设珠海wordpress column
  • 做a免费网站有哪些icp备案 网站首页
  • 手机网站微信链接怎么做godaddy网站建设教程
  • 江阴网站制作设计网页制作设计思路和过程描述
  • 婚庆公司策划书网站优化和提升网站排名怎么做
  • 菏泽做网站建设找哪家如何做简易的网站
  • 唐山网站建设开发设计公司谷歌推广方式
  • 微信群如何推广网站建设自己做的网站怎么设置关键词
  • 旅游网站栏目建设2024手机热销榜第一名
  • 沈阳网站订制软文推广的作用
  • 做网销的网站小公司网络组建
  • 西安网站建设案例廊坊seo排名
  • 网站建设结构图下载网站管理问题
  • 潍坊学校网站建设网站开发语言作用
  • 购物网站建设方案ppt深圳vi设计深圳vi设计公司
  • 深圳网站建设公司官网如何用dreamer做网站
  • 贵阳哪里可以做网站包头做网站公司
  • wordpress mv网站模板网站建设产品话术
  • edm营销网站领手工在家做的网站2019
  • 学校的网站怎么做wordpress商城推广插件
  • 网站不在首页显示出来吗网站开发文本
  • 设计漂亮的网站哪个做企业网站
  • 服饰类行业_如果要建设网站_说明其建站流程.哈尔滨网页制作人才招聘
  • c2c网站网址什么网站做的好看的