网上看到很多文章写调用vc的dll,但我尝试了总是出问题,下面结合参考别人的文章,实现了Qt显示调用vs中c接口的dll。

具体直接上代码:

vs中的代码:

TMax.h:

 #ifdef TMAX
#define TMax_API _declspec(dllexport)
#else
#define TMax_API _declspec(dllimport)
#endif #ifndef _TMAX_
#define _TMAX_ #include <iostream>
using namespace std; #ifdef __cplusplus
extern "C" {
#endif int TMax_API Tmax(int x,int y); #ifdef __cplusplus
}
#endif #endif

TMax.cpp:

 #define TMAX
#include "TMax.h"
int TMax_API Tmax(int x,int y)
{
if (x>y)
{
return x;
}
else
return y;
}

在Qt建立一个工程,然后在主函数调用dll,具体代码为:

 #include <QtGui/QApplication>
#include <QDebug>
#include <QLibrary> int main(int argc, char *argv[])
{
QApplication a(argc, argv); QLibrary myDll("TestMax.dll");
if(!myDll.load())
{
qDebug()<<"load dll error";
}
else
{
qDebug()<<"load dll suncess";
typedef int(*FUN)(int,int);
FUN myAdd=(FUN)myDll.resolve("Tmax");
if(myAdd)
{
qDebug()<<myAdd(,);
}
else
qDebug()<<"get function address error";
}
if(myDll.isLoaded())
myDll.unload(); return a.exec();
}

然后把生成的“TestMax.dll”文件拷贝到Qt生成exe的地方,而不是放在工程的源代码里就可以调用成功了,

具体效果图为:

关于隐示调用,至今还没调用成功。

如果手上有C++的dll的时候,在QT中无法调用,可以通过“Dll函数查看器”这个软件查看带有参数的dll函数即可,或者说

可以在VS中用C的接口封装一下这个C++的dll,然后只需要把二个dll一起拷贝过去,但是只是加载一个C接口的dll即可使用。

时间:2014/03/12

刚刚测试通过显示调用程序,

dll同上,不重复写了。

在pro文件中,添加头文件路径及其lib文件,

INCLUDEPATH+=D:\workALL\PrawBz

LIBS+=D:\workALL\PrawBz\TestMax.lib

在main文件里添加头文件,然后把dll拷贝到生成软件目录下。
直接调用运行即可。 但只支持C的接口,不支持C++接口。

Qt显示调用vs中的dll的更多相关文章

  1. 显示调用C++中构造函数和析构函数(有什么弊端)

    1.C++中, 构造函数和析构函数可以被显示调用. 显示调用默认构造函数的语法: a.A::A();(不能写成a.A();) , 显示调用非默认构造函数的语法: a.A::A(7);(不能写成a.A( ...

  2. Qt Creator调用VS2008生成的DLL注意事项 good

    问题:生成的dll文件QT无法静态/隐式调用 分析:调用的lib库可能是msvc编译的,而我用Qt调用,Qt默认编译器是minGW,两种编译器生成的函数名不一样,所以调用的时候你要用哪个函数,编译结果 ...

  3. QT调用C#写的Dll

    参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...

  4. Qt调用VS生成的dll

      预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windo ...

  5. 嵌入式qt显示中文和隐藏鼠标

    最近项目快接近尾声了,要把项目移植到板子上,但是板子上的系统没有安装字库,导致中文无法显示,并且有一个很讨厌的鼠标光标(又没有鼠标),上网找了一些解决方案,记录一下 qt显示中文: 如果你急于在ARM ...

  6. C#如何静态调用C++中的方法(静态调用dll)

    当我们想要在C#中使用C++项目的方法时,这个时候就可以通过调用C++项目的dll来实现,它有静态和动态调用两种方法. DLL(Dynamic Link Library)文件为动态链接库文件,又称“应 ...

  7. Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)

    Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对 ...

  8. 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:

    我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中: C/C++ code   ? 1 int retrieve(int scanno,void* buf); 在 ...

  9. (转载)C++中, 构造函数和析构函数能不能被显示调用?

    (转载)http://blog.csdn.net/zhangxinrun/article/details/6056321 代码: view plaincopy to clipboardprint?#i ...

随机推荐

  1. 高级爬虫工程师(Spider)-美团网-拉勾网-最专业的互联网招聘平台

    高级爬虫工程师(Spider)-美团网-拉勾网-最专业的互联网招聘平台 高级爬虫工程师(Spider)

  2. X Window System介绍

    1.概述     X Window System是1984年由麻省理工学院(MIT)和DEC公司共同开发研究的,是执行在UNIX系统上的视窗系统.严格地说,X Window System并非一个软件, ...

  3. C语言中操作符的优先级大全

    C语言中操作符的优先级大全, 当然c++, Objective-C,大部分语言都试用. 下面是来自The C Programming Language 2th的总结. OperatorsAssocia ...

  4. 《数据通信与网络》笔记--虚电路网络:帧中继和ATM

    在之前的文章中已经介绍过虚电路交换,详细请参见:http://blog.csdn.net/todd911/article/details/9069447 这边介绍下使用虚电路交换的2中WAN技术:帧中 ...

  5. html 中的块级元素 内联元素

    上一个礼拜,做crm项目,使用的大部分都是js,nodejs,ajax 的内容,但是今天我想写写关于html中的块级元素和内联元素 的东西. 首先,html 中的块级元素 内联元素 我们可以看到,这两 ...

  6. eclipse the user operation is waiting for building workspace" to complete

    "the user operation is waiting for building workspace" to complete", 解决办法: 1.选择菜单栏的“P ...

  7. [转] Chrome 控制台不完全指南

    转自: http://www.cnblogs.com/Wayou/p/chrome-console-tips-and-tricks.html#home Chrome的开发者工具已经强大到没朋友的地步了 ...

  8. USACO Healthy Holsteins DFS

    使用排列组合,遍历所有可能的情况C(1)+C(2)+C(3)……C(n)= 2^G种组合 数据规模不大,暴力过去最多也就是2^15 = 23768种情况 所以就暴力咯,不过还是Debug了一会 Sou ...

  9. python模块学习---HTMLParser(解析HTML文档元素)

    HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. 使用时需要定义一个从类HTMLParser继承的类,重定义 ...

  10. three.js 源代码凝视(十四)Math/Sphere.js

    商域无疆 (http://blog.csdn.net/omni360/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:商域无疆 -  本博客专注于 敏捷开发 ...