QtCreator怎么创建DLL供第三方程序使用

QtCreator怎么创建DLL供第三方程序使用,第1张

哦原来是要实现免注册COM组件。这个manifest清单文件不可以放在exe文件中但是可以作为资源放在DLL文件中。去找一个资源编辑工具,可以编辑可执行文件里的资源的工具很多,ResEdit啊Exescope啊CFFExplorer啊ResHacker啊等等等等,用这样的工具可以把manifest文件嵌入到DLL文件中嵌入的时候记得要选对资源类型和资源ID。我记得清单文件的资源ID要用1才行,资源类型在资源脚本文件中是写作RT_MANIFEST,实际的值好像是24嵌入以后就不需要单独一个清单文件了。p.s.我记得有看到文章说在windowsxp下清单文件和dll文件使用同样的名字会造成无法实现com组件的免注册,因为系统在dll中没有发现资源之后就不会看你那个清单文件了。从windows2003以后没有这样的问题。这种免注册com啊sidebyside啊其实我也才刚学,知道有这么一个东西而已,对于里面具体的实在是不熟悉。至少……呃,我在C#里面调用com想要实现免注册,到现在也没有成功的样子(大汗

一、建立并生成动态链接库

1

我们首先在磁盘的某个位置建立一个名为DllDemo的文件夹。

打开QtCreator,新建工程,我们选择Library,C++库,然后就是choose。

怎样在Qt中建立使用动态链接库

2

然后在d出的C++库对话框我们默认类型共享库,名称为MyDll。路径就是我们刚才建立的DllDemo文件夹。然后,一直下一步,直到点击完成。

怎样在Qt中建立使用动态链接库

3

我们来看看程序结构,以及pro文件内容。

我可以看到系统自动生成了一个mydll_global.h的文件。

pro内也自动生成了一些内容。可以看到TEMPLATE = lib,而不是我平时的TEMPLATE = app。

怎样在Qt中建立使用动态链接库

4

再来看看mydll_global.h的内容。

可以看到系统自动定义了两个宏。用于声明哪些函数是需要我们导出的。

怎样在Qt中建立使用动态链接库

5

下面我们来给我们的代码添加点内容,以便于我们待会使用。

首先我们在mydll.h中添加几行代码,如下图。

注意:extern "C" MYDLLSHARED_EXPORT必须要有。

怎样在Qt中建立使用动态链接库

6

再来看看mydll.cpp中的实现代码,都比较简单。

怎样在Qt中建立使用动态链接库

7

代码编写完毕后,我们直接构建就行了。然后就可以看到我们生成的dll了。

怎样在Qt中建立使用动态链接库

END

二、测试生成的DLL

新建一个基于Qt的控制台应用程序,名称为DllTest。依然放置在我们的DllDemo的目录下。

怎样在Qt中建立使用动态链接库

建好了以后,就可以在main.cpp写代码了。我们通过QLibrary类来加载dll。

因为要获得类对象的实例,所以我们需要将mydll.h包含进来。

要注意的是,我没有对函数是否成功获取做检测。

来看看我们的代码:

怎样在Qt中建立使用动态链接库

代码写完后就可以构建程序了。不过要运行程序,我们还需要将刚才生成的dll拷贝到程序的同级目录。

怎样在Qt中建立使用动态链接库

在IDE中运行程序,因为我生成的是debug版的程序,相关的环境变量未设置,无法独立运行。

可以看到我们的dll工作的很好,程序运行正常。

怎样在Qt中建立使用动态链接库

END

三、善用Assistant

1

最后我们来看看Assistant中关于QLibrary的描述。比较费解的是,Assistant中并没有对创建共享库做详细的说明,估计是这个太简单或资料太多了吧。

怎样在Qt中建立使用动态链接库


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11503369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存