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

jsp做网站怎么打开玩游戏的网页

jsp做网站怎么打开,玩游戏的网页,南京本地网站建站,站长工具是做什么的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/424020.html

相关文章:

  • 个人备案域名可以做企业网站吗dedecms手机网站插件
  • 苹果上架 App 全流程详解,iOS 应用发布步骤、ipa 文件上传工具、TestFlight 测试与 App Store 审核经验
  • 网站建设中模版靖江做网站的单位
  • 协会网站信息平台建设住房和城乡建设部网站
  • 整站优化哪家专业天府健康通二维码图片高清下载
  • 静态网站是什么怎么做网站登录站
  • AI大模型是怎么工作的?从石头分类说起
  • 苹果群控系统如何做到游戏数据精准采集
  • 分布式任务调度系统中的线程池使用详解
  • pc开奖网站开发濮阳建网站
  • JWT token 简要介绍以及使用场景和案例
  • 网站在线留言怎么做行政法规
  • 语义网络(Semantic Net)对人工智能中自然语言处理的深层语义分析的影响与启示
  • 南通网站建设优化网站建设服务器配置
  • “AI+“行动下的可控智能体:GPT-5 与 GPT-OSS 高性能推理 安全可控 产业落地 GPT-OSS 一可控AI目前全球唯一开源解决方案
  • 零基础网站建设视频想做一个自己的网站怎么做
  • UWB实操:使用litepoint测试FCC 1ms PSD功率谱密度
  • 企业网站自己可以做吗工作室做什么项目好
  • 商丘做网站的电话怎样做自己公司的网站
  • 复旦华为提出首个空间理解和生成统一框架UniUGG,支持参考图像和任意视图变换的 3D 场景生成和空间视觉问答 (VQA) 任务。
  • InnoDB与MySQL复制的关键注意事项
  • 【python】五个容器
  • 网站后台信息发布这样做利用html做博客网站
  • SSM数字图书馆on33n(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 网站开发项目团队人员易车网汽车之家
  • 个人建站公司好看个人网页模板
  • 高端网站建设 源码wordpress去log
  • 杭州网站建设哪里好牡丹江有做网站的人吗
  • PHP转JAVA入门知识解析 (指南一)
  • Django之APPEND_SLASH配置爬坑