Qt显示调用vs中的dll
网上看到很多文章写调用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的更多相关文章
- 显示调用C++中构造函数和析构函数(有什么弊端)
1.C++中, 构造函数和析构函数可以被显示调用. 显示调用默认构造函数的语法: a.A::A();(不能写成a.A();) , 显示调用非默认构造函数的语法: a.A::A(7);(不能写成a.A( ...
- Qt Creator调用VS2008生成的DLL注意事项 good
问题:生成的dll文件QT无法静态/隐式调用 分析:调用的lib库可能是msvc编译的,而我用Qt调用,Qt默认编译器是minGW,两种编译器生成的函数名不一样,所以调用的时候你要用哪个函数,编译结果 ...
- QT调用C#写的Dll
参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...
- Qt调用VS生成的dll
预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windo ...
- 嵌入式qt显示中文和隐藏鼠标
最近项目快接近尾声了,要把项目移植到板子上,但是板子上的系统没有安装字库,导致中文无法显示,并且有一个很讨厌的鼠标光标(又没有鼠标),上网找了一些解决方案,记录一下 qt显示中文: 如果你急于在ARM ...
- C#如何静态调用C++中的方法(静态调用dll)
当我们想要在C#中使用C++项目的方法时,这个时候就可以通过调用C++项目的dll来实现,它有静态和动态调用两种方法. DLL(Dynamic Link Library)文件为动态链接库文件,又称“应 ...
- Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)
Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对 ...
- 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:
我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中: C/C++ code ? 1 int retrieve(int scanno,void* buf); 在 ...
- (转载)C++中, 构造函数和析构函数能不能被显示调用?
(转载)http://blog.csdn.net/zhangxinrun/article/details/6056321 代码: view plaincopy to clipboardprint?#i ...
随机推荐
- CUDA samples 第三章 sample reference 概况
示例代码分为下列几类: 1. Simple Reference 基础CUDA示例,适用于初学者, 反应了运用CUDA和CUDA runtime APIs的一些基本概念. 2. Utilitie ...
- C语言中操作符的优先级大全
C语言中操作符的优先级大全, 当然c++, Objective-C,大部分语言都试用. 下面是来自The C Programming Language 2th的总结. OperatorsAssocia ...
- Winsock编程基础介绍 .
相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程中应用最广泛的编程接口Winsock API. 使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可以直接使用Win ...
- 误mlogc.c:32:23: error: curl/curl.h: No such file or directory
出现以下错误: mlogc.c:32:23: error: curl/curl.h: No such file or directory mlogc.c:1091: error: expected ' ...
- android Graphics(一):概述及基本几何图形绘制
前言:我最近想抽空研究研究android的各种特效,android的特效真是其它平台无法比拟的,而且一个漂亮的UI交互,会给APP增色不少,而学习特效之前,有关graphics绘图的基础知识是必不可少 ...
- Java--finally
finally 子句(clause)是不是总会执行??? package com.volshell.test; public class Main { public static void main( ...
- jsp获取一个对象和list对象
DiscHd ks = DiscHdService.getDiscHdByID(code); model.addAttribute("ks", ks); 如果传的是对象,则jsp页 ...
- CF(437C)The Child and Toy(馋)
意甲冠军:给定一个无向图,每个小点右键.操作被拉动所有点逐一将去,直到一个点的其余部分,在连边和点拉远了点,在该点右点的其余的费用.寻找所需要的最低成本的运营完全成本. 解法:贪心的思想,每次将剩余点 ...
- 动态规划之插头DP入门
基于联通性的状态压缩动态规划是一类非常典型的状态压缩动态规划问题,由于其压缩的本质并不像是普通的状态压缩动态规划那样用0或者1来表示未使用.使用两种状态,而是使用数字来表示类似插头的状态,因此.它又被 ...
- ListBox控件
主要介绍:自定义数据.绑定数据库数据 前台代码: <div> <asp:ListBox ID=" Width ="100px"> <asp: ...