社区
界面
帖子详情
dll中隐式声明 类中函数的隐式声明 如何调用类中的函数dll中
zw0558
2009-06-02 12:21:06
我是通过隐式声明调用函数,在.def文件中对函数进行声明。当我在dll中创建类的时候如何完成类中的函数调用?如果通过在.def文件中函数声明怎么作?还是在通过别的方法去做!请大侠们给出详细的解答?
...全文
95
6
打赏
收藏
dll中隐式声明 类中函数的隐式声明 如何调用类中的函数dll中
我是通过隐式声明调用函数,在.def文件中对函数进行声明。当我在dll中创建类的时候如何完成类中的函数调用?如果通过在.def文件中函数声明怎么作?还是在通过别的方法去做!请大侠们给出详细的解答?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
RichyMong
2009-06-03
打赏
举报
回复
帮顶,顺便学习
skyxie
2009-06-02
打赏
举报
回复
你是想把dll中的类导出吗?
首先使用Wizard创建一个Win32 Dynamic-Link Library工程,然后定义一个简单的C++类CInDLL。由于该类会被工程之外的文件所引用,所以需要对这个类进行引出。因为只有引出后所生成的DLL中才带有供足够的信息以在连接和运行时被正确引入到进程空间中。有两种方法可以引出类,使用__declspec(dllexport)定义和使用定义文件。
下面先讲使用__declspec(dllexport)的方法:将类定义改为:class __declspec(dllexport) CInDLL 就可以了。(译者:你也许不相信会有这么简单,我也不相信。:-) 这样产生的工程在编译时是正确的但是在使用时会产生错误,因为你包含的头文件中也是使用__declspec(dllexport),而使用这个DLL的工程中并没有引出这个类,而是需要引入这个类)在使用时需要将类定义改为class __declspec(dllimport) CInDLL就可以了。
使用定义文件可以有效的避免这个问题,这种方法是利用宏定义在不同的地方产生不同的编译代码:在头文件中加入如下的代码:
#ifdef _CLASSINDLL
#define CLASSINDLL_CLASS_DECL __declspec(dllexport)
#else
#define CLASSINDLL_CLASS_DECL __declspec(dllimport)
#endif
#endif // ClassInDLL_H
//将class __declspec(dllexport) CInDLL改为
class CLASSINDLL_CLASS_DECL CInDLL
{ CInDLL(); ... }
在实现这个类的CPP文件的顶部加入#define _CLASSINDLL语句。
#define _CLASSINDLL CInDLL::CInDLL() { } ...
这样一来在使用这个类时就可以不做任何改动了.
oysoft
2009-06-02
打赏
举报
回复
EXPORT 关键字定义类
或者采用COM DLL
oyljerry
2009-06-02
打赏
举报
回复
__declspec(dllexport) 从DLL中导出你的类,然后import导入对应的lib,包含对应的h文件,就可以直接调用导出的类了
写不动代码的人
2009-06-02
打赏
举报
回复
[Quote=引用 2 楼 skyxie 的回复:]
你是想把dll中的类导出吗?
首先使用Wizard创建一个Win32 Dynamic-Link Library工程,然后定义一个简单的C++类CInDLL。由于该类会被工程之外的文件所引用,所以需要对这个类进行引出。因为只有引出后所生成的DLL中才带有供足够的信息以在连接和运行时被正确引入到进程空间中。有两种方法可以引出类,使用__declspec(dllexport)定义和使用定义文件。
下面先讲使用__declspec(dllexport)的方法:将类定义改为:c…
[/Quote]
很详细了
jian_tian_yang
2009-06-02
打赏
举报
回复
帮楼主顶一下
【C/C++笔记】之显式
调用
DLL
、
隐式
调用
DLL
、查看
DLL
输出
函数
DLL
的优点 简单的说,
dll
有以下几个优点: 1) 节省内存。同一个软件模块,若是以源代码的形式重用,则会被编译到不同的可执行程序
中
,同时运行这些exe时这些模块的二进制码会被重复加载到内存
中
。如果使用
dll
,则只在内存
中
加载一次,所有使用该
dll
的进程会共享此块内存(当然,像
dll
中
的全局变量这种东西是会被每个进程复制一份的)。 2) 不需编译的软件系统升级,若一个软件...
Qt
调用
dll
的
隐式
调用
Qt
调用
dll
的
隐式
调用
一、前言: Qt
调用
dll
的例子,在网上找了很多个,始终由于自己对Qt不熟的原因总是 失败(本人一直使用vs开发,由于工程上要提供sdk给Qt工程师
调用
导致各种问题),经过一番折腾终于可以实现其
中
的一种
调用
方式:
隐式
调用
。 当然,Qt
调用
dll
的方法好多种,然后毕竟不是专门搞Qt的,所以没有专门归纳各种
调用
方式,紧紧
调用
成功一种,记录下来。 二、Qt
调用
Qt写的
dll
1...
C/C++
dll
的
隐式
调用
与显式
调用
1.头文件、lib文件、
dll
文件 头文件:存放
函数
声明
dll
文件:存放
函数
的定义,动态链接库文件Dynamic Link Library,运行时使用 lib文件:具体分静态编译与动态编译,编译时使用 静态编译 静态编译将导出
声明
和实现都放在lib
中
。编译后所有代码都嵌入到宿主程序。 静态编译的优点是编写出来的程序不需要
调用
DLL
和载入
函数
,直接可以当成程序的一部分来使用。 静态编译的缺点也是显而易见的,使用静态编译的程序体积会比动态编译大,原因是
函数
的实现被嵌入为程序代码的一部分。 动态
DLL
的显式
调用
与
隐式
调用
一、
隐式
调用
编译程序时需要头文件、lib文件,运行时需要
DLL
文件,并且运行过程
中
DLL
文件一直被占用。#pragma comment(lib, "Common.lib")二、显式
调用
编译时什么都不需要,在需要使用
DLL
中
的
函数
时,通过LoadLibrary()和FindProcAdress()这两个API
调用
。只需要一个
DLL
文件即可,而且在需要使用的时候
DLL
才被占用,使用完毕即解除占用(Fr...
QT
隐式
调用
DLL
1.1QT
调用
DLL
的两种常见方法简介
调用
说明:关于QT
调用
DLL
方法主要分两种,一种是显示
调用
,另一种是
隐式
调用
。
声明
:事先我已经自己动手写了一个简单的
dll
文件(my
DLL
.
dll
),C版接口的。首先,从
dll
中
导出了导入库(.lib)文件,
dll
中
有两个
函数
,原型如下: voidHelloWorld(); //
函数
内部
调用
Win32 API,功能是弹出一个helloworld提示框 intadd(inta,intb); //实现两个数相加,并返回结果 1.2显...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章