QT动态连接库的编写

1.QT动态链接库的编写流程
1.1 首先在Qt Creator中创建一个动态连接库Matrix,添加类名,生成一个类(matrix.h和matrix.cpp)和一个matrix_global.h的文件,在matrix_global.h中可看到使用的导出宏,为MATRIXSHARED_EXPORT。如果只想导出一个函数接口,可以把类的声明和定义删除,然后进行导出函数的编写即可。

1.2 使用导出宏的地方,需要包含matrix_global.h头文件,就可以导出自己需要的函数,类等;

1.3 需要指定生的.dll和.lib文件的生成目录,若为同种语言编写的项目调用该动态库,建议把.dll和.lib文件的生成目录和项目的.exe生成目录统一到一个目录中。通过如下方式指定生成的目录。

//在动态库的.pro配置文件中添加如下语句,其中$$PWD表当前目录,../表示上一级目录
DESTDIR=$$PWD/../bin/
//在调用动态库的项目的.pro文件中,添加如下语句
DESTDIR=$$PWD/../bin///添加动态库的.h文件的路径
INCLUDEPATH += ../Matrix//连接.dll,.lib文件,注意加-L,-l和空格,后缀名可以省略,会自动识别。
LIBS  += -L$$PWD/../bin/  -lMatrix

1.4 在修改了.pro文件后,一定要执行qmake,才能使修改生效,这一步很容易忘记。

2.动态链接库编写的注意事项

2.1 导出一个纯C的接口

extern "C" MATRIXSHARED_EXPORT void Fun();

2.2 在导出函数或类的时候,若为同种语言的项目调用导出的功能,不需要考虑参数的问题,因为可以定义相同的参数类型,若为C#调用C++编写的动态链接库时,需要考虑参数类型匹配的问题,基本的数据类型,可以采用托管代码,C#可以自动识别基本的数据类型。若是比较复杂或者是其独有的数据类型,则需要通过读写文件来进行数据的交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware下主机与虚拟机剪切板独立,无法直接复制粘贴

看了很多博客都说需要重新安装vmware tools,但我使用的是这种方法,亲测有效!!! 关闭虚拟机点击编辑虚拟机设置->选项选择客户机隔离,勾选上启动复制粘贴即可(如果之前就已经勾选上但失效的情…

教AI区分因果关系和相关性,将改变下一代 AI 的研发

来源:ScienceAI编辑:萝卜皮多年前,AI 领域曾发生过一件荒唐而有趣的事情。据说,研究人员开发了一种对医院数据进行训练的算法。这个算法发现,「患有哮喘的肺炎患者的治愈表现,比没有哮喘的肺炎患者更好」&a…

sdaf

dfddfdd 转载于:https://www.cnblogs.com/jiangfeilong/p/10432174.html

Java Socket实现客户端服务端之间的通信

Java Socket Java Socket编程用于在不同JRE上运行的应用程序之间的通信。Java Socket编程可以是面向连接的或无连接的。Socket和ServerSocket类用于面向连接的套接字编程,DatagramSocket和DatagramPacket类用于无连接套接字编程。 此Demo将进行单向客户端和服务器…

数据结构-线性结构

一.线性结构 1.顺序线性表 1.1 线性结构是一种基本的数据结构,具有单一前驱和后继的数据关系描述。 1.2 线性表的存储结构分为顺序存储和链式存储。 1.3 顺序线性表的元素间的逻辑关系无需占用额外的空间来存储。 1.4 一般地,以LOC(a1a_1a1​)表示线性…

脑智前沿科普|虚拟现实如何欺骗你的大脑

来源:公众号(脑与心智毕生发展研究中心CLIMB)编辑:Yezi审阅:mingzlee7虚拟现实(Virtual reality, VR)就像被神奇地传送到另一个世界。这是一项令人兴奋的技术,但当我们戴上耳机后,我们很少停下来…

C++11新特性以及std::thread多线程编程

一 .C11新特性 1. auto 类型推导 1.1 当号右边的表达式是一个引用类型时,auto会把引用抛弃,直接推导出原始类型; 1.2 当号右边的表达式带有const属性时,auto不会使用const属性; 1.3 当const 和引用结合时,…

Linux下Java连接数据库出现 Access denied for user 'root'@'localhost' (using password: YES)错误

一、问题描述 centos 7 终端键入 mysql -u root -p 输入密码后可成功访问数据库,但使用IDEA编写Java代码实现数据库连接时却出现Access denied for user ‘root’‘localhost’ (using password: YES) 错误。 二、解决方法 在刚安装mysql时,系统会默认…

Zookeeper常用命令行及API

一、Zookeeper常用命令行 1.启动zookeeper客户端(在启动zookeeper集群后启动进行调试) zkCli.sh   2.查看帮助、操作历史 help、history 3.查看当前Znode的目录 ls /    ls2 /  (查看当前Znode的详细信息) 4.创建Znode (1)默认:create 路径 内容 create /Wy…

被骗两次?黄仁勋骗过世界的14秒,英伟达押宝未来的元宇宙……

来源:物联网智库在近期召开的计算机图形顶级会议ACM SIGGRAPH 2021 上,英伟达介绍了自研的3D仿真模拟和协作平台Omniverse,并放出了“合成版老黄”的打造过程。有媒体据此报道称——万万没想到,在3个月前的GTC大会中,厨…

QT清单打印程序

1.主要代码 //customer.h文件 #ifndef CUSTOMER_H #define CUSTOMER_H#include <QObject> #include <string>class Customer : public QObject {Q_OBJECT public:explicit Customer(QObject *parent nullptr);Customer(const Customer& customer);void setCo…

Linux下生成指定大小文件(命令+Java程序)

1、dd命令 of&#xff1a;fileName为文件名称&#xff0c;例如test.txt &#xff1b; bs&#xff1a;设置一次复制的大小&#xff0c;例如1M&#xff1b; count&#xff1a;设置复制次数&#xff0c;例如100&#xff1b; dd if/dev/zero of<fileName> bs<一次复制…

C语言之随机数函数( rand() )的使用方法

文章出自个人博客https://knightyun.github.io/2018/04/25/c-rand-number&#xff0c;转载请申明。 在程序设计中&#xff0c;难免会使用到随机值函数&#xff0c;其原理与语法大多类似&#xff0c;接下来以C语言为例介绍其随机值函数 rand() 用法。 原理 引用百度百科&#xf…

图灵奖得主杨立昆:人工智能比你更聪明吗?

来源&#xff1a;混沌巡洋舰人工智能常常被认为是一项将要颠覆世界的技术&#xff0c;从这一概念诞生至今的65年中&#xff0c;无数电影与小说塑造了各种经典的人工智能角色&#xff0c;AI &#xff08;Artificial Intelligence&#xff09;也很快成为人类未来世界蓝图中的重要…

(转)Windows系统、Linux系统 和 Mac OS操作系统 历史由来 与 区别?

目录 1 UNIX 由来 2 Linux 由来 3 Windows与Linux的主要区别 4 关于Linux的一些疑惑 参考资料 目前常见的三大操作系统&#xff1a;Windows系统、Linux系统 和 Mac OS操作系统。 首先&#xff0c;不管是Windows操作系统、Linux系统还是苹果的Mac OS操作系统&#xff0c;甚…

国务院公布《关键信息基础设施安全保护条例》

来源&#xff1a;中国政府网编辑&#xff1a;蒲蒲据中国政府网8月17日消息&#xff0c;《关键信息基础设施安全保护条例》已经2021年4月27日国务院第133次常务会议通过&#xff0c;现予公布&#xff0c;自2021年9月1日起施行。条例指出&#xff0c;国家对关键信息基础设施实行重…

hadoop碰到的 一个问题

在里面添加/usr/local/hadoop/etc/hadoop/log4j.properties log4j.logger.org.apache.hadoop.util.NativeCodeLoaderDEBUG 可以查看debug信息&#xff1a; [rootelk03 hadoop]# hdfs dfs -ls /19/02/26 01:19:37 DEBUG util.NativeCodeLoader: Trying to load the custom-built…

SpringBoot笔记整理(一)

SpringBoot笔记整理&#xff08;一&#xff09; SpringBoot笔记整理&#xff08;二&#xff09; SpringBoot笔记整理&#xff08;三&#xff09; SpringBoot笔记整理&#xff08;四&#xff09; 1、使用Spring Initializer快速创建Springboot项目 默认生成的Spring Boot项目&…

文章推荐 | 城市规划中城市信息学的研究进展

来源&#xff1a;北京城市实验室BCL随着计算机技术的飞速发展&#xff0c;城市信息学作为城市规划领域的一门新兴学科&#xff0c;逐渐引起学术界的关注。城市信息学的兴起给城市规划带来了新的压力&#xff0c;但它也提供了新的城市分析视角。在此背景下&#xff0c;专家小组概…

Matlab基础

一.入门基础 1.基本知识 1.1 输入命令 以分号结尾不会打印变量的值 x 1 y x;1.2 变量命名规则&#xff1a;以字母开头&#xff0c;并且仅包含字母、数字和下划线。 1.3 使用save命令将工作区中的变量保存到MAT文件的MATLAB特定格式文件中,文件名为datafile.mat。可以指定保…