用Qt生成dll类库及调用方法

空白工程新建DLL后,将DLL和LIB文件放入需要调用的“指定目录”

项目-》属性->连接器-》常规-》附加库目录->添加“指定目录”

项目-》属性->连接器-》输入-》附加依赖项->添加“LIB文件”

添加头文件到项目中,则DLL可用!

VC6.0:

使一个项目编译生成DLL库而不生成可执行文件:

删除main()方法;

将.pro项目文件中的TEMPLATE = app改为TEMPLATE = lib。

然后编译,此时生成的就是.a和.dll的文件。

在另一个项目中调用此DLL:

在项目文件中添加LIB。如添加此行:LIBS += "D:\workspace\MRP_Common\debug\common.dll"
(common.dll既是上面生成的DLL);

复制dll中类或方法的头文件到该项目中,并在要调用common.dll中类或方法的文件上面include;

make,在debug目录中生成可执行文件,然后将dll复制到debug中,运行。

例子:

Cpp代码  

  1. ########################### 生成DLL的工程: #######################

  2. 修改pro文件: TEMPLATE=lib
  3. ########################### .h文件 #######################

  4. #ifndef DLLTEST_H

  5. #define DLLTEST_H
  6. #ifdef Q_WS_WIN

  7. #define MY_EXPORT __declspec(dllexport)

  8. #else

  9. #define MY_EXPORT

  10. #endif

  11. class DllTest {

  12. public:

  13. DllTest();

  14. int getAge() {

  15. return 10;

  16. }

  17. };
  18. extern "C" MY_EXPORT int add(int a, int b) {

  19. return a + b;

  20. }
  21. extern "C" MY_EXPORT DllTest* getDllTest(); // 使用类
  22. #endif // DLLTEST_H

  23. ########################### .cpp文件 #######################

  24. #include "dlltest.h"

  25. #include <qDebug>
  26. DllTest::DllTest() {

  27. qDebug() << "Shared Dll Test";

  28. }
  29. DllTest* getDllTest() {

  30. return new DllTest();

  31. }
  32. // 如果是C++编译的函数, 要使用extern "C"来包装成C函数(导出函数, 给外部提供服务).

Cpp代码  

  1. ########################### 使用DLL的工程: #######################

  2. pro文件中加入: LIBS += "DllTest.dll"
  3. ########################### 测试.cpp文件 #######################

  4. #include "dlltest.h"

  5. #include <QLibrary>

  6. #include <qDebug>

  7. #include <QApplication>
  8. typedef int (*AddFunc)(int, int);

  9. typedef DllTest* (*GetFunc)();
  10. int main(int argc, char* argv[]) {

  11. QApplication app(argc, argv, false);

  12. QLibrary lib("DllTest");

  13. if (lib.load()) {

  14. qDebug() << "Load dll successfully.";

  15. AddFunc func = (AddFunc)lib.resolve("add");

  16. if (func) {

  17. qDebug() << func(1, 3);

  18. }
  19. GetFunc g = (GetFunc)lib.resolve("getDllTest");

  20. if (g) {

  21. DllTest *t = g(); // 使用DLL中的类

  22. qDebug() << t->getAge();

  23. delete t;

  24. }

  25. } else {

  26. qDebug() << "Load dll Failed";

  27. }
  28. return app.exec();

  29. }

用Qt生成dll类库及调用方法

时间: 2024-10-12 21:50:52

用Qt生成dll类库及调用方法的相关文章

Visual Studio 2010生成dll文件并调用(C#)

1.创建新C#控制台应用程序,项目命名createBll,打开Program.cs重命名为TestA(可以不重命名)并修改代码,如图: 写好后,可以写其它的类.cs文件 2.完成后,点击菜单栏的"项目",下拉单选择"createDll属性",打开如图窗口 在输出类型选择"类库",然后关掉该窗口,生成解决方案,即生成了creatBll.dll文件,在项目下createBll\createBll\bin\Debug\createBll.dll目录下.

QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)

最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了很多人家的SDK,绝大部分用VC编写,而且VC6.0居多,估计也是为了兼容大量的XP用户及IE浏览器,XP自带了VC6.0运行库,所以无需兼带其他DLL即可运行.也发现有些用汇编和C封装的,那估计是高手才能编写啊!那怎么办呢?眼看一星期的交货期要到了,由于本人从来没有写过SDK开发包,心里那个着急啊,赶紧想出了三种处理方案. 方案一: 用自己最熟悉的QT来写,毕竟QT也是C++的一种嘛,应该可以和VC通用的.初步实验,你妹啊,调

c#生成dll文件并调用

一.使用vs2017生成dll文件 新建项目->类库->生成解决方案,写一个简单实现加法的dll文件 二.新建项目调用dll文件 新建项目->窗体应用程序 将MyTestDll项目的debug文件夹下的MyTestDll.dll拷贝到该项目的debug文件夹下,添加引用->浏览->MyTestDll.dll 在命名空间上加上using MyTestDll 按钮实现: 注意:要先将类实例化,再调用类中的方法. 最后实现功能: 原文地址:https://www.cnblogs.c

wpf窗体项目 生成dll类库文件

我想把一个wpf应用程序的输出类型由windows应用程序改为类库该怎么做,直接在项目属性里改的话报错为 库项目文件无法指定applicationdefinition属性 wpf窗体项目运行之后bin/debug下面只有.exe文件,现在想要生成dll文件供其他第三方引用的实现方法. 1.删除App.xaml文件 2.将项目属性--应用程序--输出类型 改为类库. 下面可以没有,经测试,上面两步就可以实现,下面的内容是其他文章中的内容,备用. 打开解决方案中的 Properties目录下的 As

使用JNI,vs2010 生成dll, JSP中调用dll

JNI是Java Native Interface的缩写,中文为JAVA本地调用.从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了. 主要运行过程:创建Java文件---->使用 javah 编译生成相应的头文件供vs2010 中使用--->使用vs2010 编译生成dll文件

C++调用C#dll类库中的方法(非显性COM)

一般在网上搜C++如何调用C#的函数,出来的结果都是做成COM组件,但是这种方法dll安装麻烦,需要注册COM组件,需要管理员权限,调试麻烦,经常需要重启机器,反正有诸多不便. 然后在看<CLR via C#>时看到一种方法,可以免去这种苦恼.少废话,先上代码. C#类库的: namespace ClassLibrary1 { public class Class1 { public static int pwzMethodName(String pwzArgument) { //Thread

js调DLL类库中的方法实现(非com组件形式)

1.首先,创建一个Web空项目 2.添加一个html或aspx页面 3.页面代码如所示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><

C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll C#调用、动态调用

1.直接调用 已知webservice路径,则可以直接 添加服务引用--高级--添加web引用 直接输入webservice URL.这个比较常见也很简单 即有完整的webservice文件目录如下图所示, 也可以在本地IIS根据webservice文件目录新发布一个webservice,然后程序动态调用,修改Url public new string Url { set; get; } 2.根据wsdl文件生成webservice 的.cs文件 及 生成dll C#调用   有时没有这么多文件

C# 怎么生成DLL文件(转)

有两种方法:    但是一般这个使用 打开VS2008,依次点击:菜单->文件->新建项目->项目类型visual C#(这里假设为该项目所取的名字是DllBuild)->类库(注意必须是类库),即新建一个由纯.cs 类库文件组成的程序集,写好代码之后(例如写了一个名为DllTest.cs的类,该类的namespace取名为DllTestNS),再依次点击:菜单->生成->生成DllBuild,这样你的DllBuild/DllBuild/bin/Debug文件夹或者Dl