英国365bet网址-365bet足球游戏-正版约彩365软件

简约 · 精致 · 专注内容

Qt如何调用VS编写的动态链接库(dll文件)

Qt如何调用VS编写的动态链接库(dll文件)

下面是我在VS编译器上写的一个简单的dll文件,关于dll文件如何编写,我就不再赘述了。

.h文件

#ifndef _MYDLL_H

#define _MYDLL_H

#ifdef MYDLL_EXPORTS

#define MYDLL_API __declspec(dllexport)

#else

#define MYDLL_API __declspec(dllimport)

#endif

extern "C" MYDLL_API int add(int a, int b);

#endif

.cpp文件

#include "mydll.h"

extern "C" MYDLL_API int add(int a, int b)

{

return (a + b);

}

编译成功后,会得到下面三个文件,mydll.h、MyDll.lib、MyDll.dll

然后打开Qt创建一个项目;我是把这三个文件全部拷贝到了运行工作目录;如下所示:

下面介绍一下Qt如何隐式调用dll文件:

打开.Pro文件

在工程文件中包含.h文件的路径以及库文件的路径即可,下面就是如何调用库文件中的函数了:

#include

#include

#include "mydll.h" //包含头文件

int main()

{

qDebug() << add(10, 20);

return 0;

}

上述是隐式调用库文件的函数,还有一种显示调用方法,如下所示:

#include

#include

#include "mydll.h" //包含头文件

typedef int(*pFun)(int, int);

int main()

{

QLibrary mydll("MyDll.dll");

if(!mydll.load())

{

qDebug() << "load dll error";

}

else

{

qDebug() << "load dll success";

pFun myAdd = (pFun)mydll.resolve("add");

if(myAdd){

qDebug() << myAdd(1, 10);

}

else

{

qDebug() << "get Function address error";

}

}

if(mydll.isLoaded())

{

mydll.unload();

}

return 0;

}

相较而言,隐式调用比显示调用更加简洁,通常都是选择隐式调用更为合适。

当然,在配置库文件的路径时,也可以选择用相对路径的方式,如下所示:

转: https://www.cnblogs.com/TechNomad/p/11428662.html

相关推荐

《别让猴子跳回背上》四、正确喂养猴子的规则(上)
Mac上如何用自带软件剪切音频(去除多余杂音)?
小米粥有酸味是怎么回事 小米粥什么人不适宜吃
记忆!巫山县城的前世今生

记忆!巫山县城的前世今生

365bet足球游戏 09-15
一文让你搞懂UEFI,与传统BIOS的区别,BIOS的工作原理,EFI 系统分区、EFI 变量、EFI 的启动过程,UEFI的架构,UEFI安全启动,主板及固件刷机工具使用
子偕意思及名字好不好解析

子偕意思及名字好不好解析

正版约彩365软件 11-11