2 zenmebande zenmebande 于 2016.03.23 23:23 提问

VC里面为什么要用def文件导出函数,直接在要用的地方包含头文件不行吗? 1C

VC里面为什么要用def文件导出函数,直接在要用的地方包含头文件不行吗?

4个回答

caozhy
caozhy   Ds   Rxr 2016.03.23 23:27

def用来导出dll函数列表,这么写比较直观一些,当然也可以直接在函数上修饰,两者都是可以的。

caozhy
caozhy 回复1314aly: 因为你是dll,让别的程序动态调用。特别是调用者可能都不是C++,也可以是basic,java
2 年多之前 回复
zenmebande
zenmebande 为什么不直接包含要使用函数所在的头文件,而一定要导出?
2 年多之前 回复
zenmebande
zenmebande   2016.03.23 23:46

为什么不直接包含要使用函数所在的头文件,而一定要导出?

a1004032158
a1004032158   2016.03.24 07:35

不是所有的函数都需要导出

CSDNXIAON
CSDNXIAON   2016.03.30 11:20

头文件里面是否应该包含函数的实现
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
为什么要用到extern 声明 include所包含的程序中的函数?
为什么要用到extern 声明 include所包含的程序中的函数? 在头文件中声明函数时,前面的extern可有可无,只要这些函数曾在某个.c文件中实现就行了,不过一些函数没有在所包含的头文件中给出声明,同时函数的定义位于其它文件中,这时候使用该函数的.c文件必须用extern标记该函数为外部函数。举个例子: /* c.h */ extern int m
动态链接库使用.def导出一个c++类的函数
1、导出函数的参数为char*时候,调用规约要使用__stdcall,使用__cdecl会报错。 2、给win32程序添加.def的时候,要在项目属性-》连接器-》输入-》模块定义文件 里面添加你的def,才没有乱七八糟前缀的导出函数。 比如: 创建一个EnableKeyboard.def文件,里面包含下面内容,就是导出类里的Keyboard_Enable函数。 LIBRARY "k
不要在头文件中使用using namespace 并尽量少include 文件
之前也没有很在意这个问题,为了图方便,经常在头文件中使用namespace。但这样的结果就是,这个头文件会被其他的文件所包含,那么这样那个文件也用了namespace所指定的命名空间,这并不是我们所期望的。所以不要在头文件里面使用namespace,特别是接口头文件。   另外也少使用include,可以用前置声明的时候就用前置声明,这样可以防止相互包含,对于接口来说也可以不暴露内部的头文件,
vc下使用def文件导出动态库
1、新建test工程,配置类型选择动态库(.dll) 2、加入工程代码 int __stdcall add(int a, int b) { return a+b; } int __stdcall sub(int a, int b) { return a-b; }3、增加test.def文件,描述如下 LIBRARY test EXPORTS add @ 1 s
VC6中用DEF文件从DLL中导出C++类
VC /fanss 发表于2005-09-09, 16:33 编写dll导出类用DEF从DLL导出一个函数,或用__declspec(dllexport)指令从DLL中导出一类,想必大家已经很熟悉了,也经常使用着。这里向大家介绍一种用DEF文件从DLL导出一个类的方法。具体原理或为什么就不废话了,学会导出后,再慢慢回味吧。这里主要叙述操作步骤。1。打开VC6.0,新建
VC++  DLL 导出函数
VC++  DLL  导出函数  经常使用VC6的Dependency查看DLL导出函数的名字,会发现有DLL导出函数的名字有时大不相同,导致不同的原因大多是和编译DLL时候指定DLL导出函数的界定符有关系。 VC++支持两种语言:即C/C++,这也是造成DLL导出函数差异的根源 我们用VS2008新建个DLL工程,工程名为“TestDLL” 把默认的源文件后缀 .CPP改
Windows 2008 Server 上安装sqlserver 2008
1. 下载sqlserver2008安装镜像,地址:(dvd镜像,支持x86和64位cpu) 3.27G http://sqlserver.dlservice.microsoft.com/dl/download/B/8/0/B808AF59-7619-4A71-A447-F597DE74AC44/SQLFULL_CHS.iso?lcid=2052 2。下载 sqlserver2008 sp
菜鸟自学数据结构系列——(一)如何写出能够在VC下运行的单链表生成程序
最近打算自学数据结构,于是就在网上淘了两本书,一本是清华大学出版社出的严蔚敏老师的数据结构,一本是程杰的大话数据结构。直接看严老师的那一本实再是很吃力。于是我就先看大话的内容后,在深入的看严老师的书。大话数据结构写的非常有意思,语言很口语化,对于有些概念都用一些通俗的语言描述,看着不累,但是个人觉得其内容的深度太低,只适合了解一下基础的概念。想深入的学习,还是严老师的那本书。所以个人觉得两本书一起
为什么matlab有的函数文件可以直接运行而有的不行
很多人拿到别人的m文件,有些函数文件摁F5可以直接运行,有的不行,这是为什么呢?恐怕对matlab的运行机理不大清楚。 关于matlab的函数定义以及代码运行机制,可以参考我的这篇文matlab的函数定义 。 运行的方式可以可以在编辑器中打开选中解析运行,也可以打开后摁F5全文件运行,亦可以在命令行窗口敲入文件名(如果是函数m文件,文件名也是函数名,作为函数文件,也可以调用),拖动文件到命令行窗口
关于导出函数与调用约定,C++ Builder 调用 VC++ 编译的DLL
extern "C" __declspec(dllimport) int __stdcall fnVCDLL(void);