Def和__declspec(dllexport)
来源:互联网 发布:电话软件 编辑:程序博客网 时间:2024/06/17 01:46
Def和__declspec(dllexport)
其实def的功能相当于extern “C” __declspec(dllexport),所以它也仅能处理C函数,而不能处理重载函数。而__declspec(dllexport)和__declspec(dllimport)配合使用能够适应任何情况,因此__declspec(dllexport)是更为先进的方法。所以,目前普遍的看法是不使用def文件,我也同意这个看法。
__declspec(dllexport) 与 .def
模块定义 (.def) 文件是包含一个或多个描述各种 DLL 属性的 Module 语句的文本文件。
1、二者的目的都是将公共符号导入到应用程序中或从 DLL 导出函数。
2、添加 __declspec(dllexport)是为了提供不使用.def文件从 .EXE 或 .DLL 导出函数的简单方法。
3、如果不使用 __declspec (dllimport) 或 __declspec(dllexport) 导出 DLL 函数,则 DLL 需要.def文件。
4、并不是任何时候选择添加 __declspec(dllexport)而放弃.def的方式都是好的。如果DLL是提供给VC++用户使用的,只需要把编译DLL时产生的.lib提供给用户,它可以很轻松地调用你的DLL。但是如果DLL是供VB、PB、Delphi用户使用的,那么会产生一个小麻烦。
因为VC++对于__declspec(dllexport) 声明的函数会进行名称转换,如下面的函数: __declspec(dllexport) int __stdcall IsWinNT() 会转换为IsWinNT@0,这样你在VB中必须这样声明: Declare Function IsWinNT Lib "my.dll" Alias "IsWinNT@0" () As Long @的后面的数由于参数类型不同而可能不同。这显然不太方便。所以如果要想避免这种转换,就要使用.def文件方式。即动态库的名字改编问题
转载:http://hi.baidu.com/wxqy1986/blog/item/0e63e44bdc047c2d09f7ef96.html
- Def和__declspec(dllexport)
- __declspec(dllexport)和__declspec(dllimport)、.def
- __declspec(dllexport) 与 .def
- extern "C" __declspec(dllexport) __declspec(dllimport) 和 def
- extern "C" __declspec(dllexport) __declspec(dllimport) 和 def
- extern "C" __declspec(dllexport) __declspec(dllimport) 和 def
- extern "C" __declspec(dllexport) __declspec(dllimport) 和 def
- __declspec(dllexport) vs *.def (转)
- extern "C"和__declspec(dllexport)以及__declspec(dllimport) 和def的简单解析
- __declspec(dllexport),extern "c"与.def文件
- __declspec(dllexport),extern "c"与.def文件
- __declspec(dllexport) 和 __declspec(dllimport))
- __declspec(dllexport) 和 __declspec(dllimport)
- __declspec(dllexport)和__declspec(dllimport)
- __declspec(dllimport)和__declspec(dllexport)
- __declspec(dllexport)和__declspec(dllimport)
- __declspec(dllexport) 和 __declspec(dllimport)
- __declspec(dllexport)和__declspec(dllimport)
- get方式传递中文参数乱码解决方式
- POJ 1840 Eqs
- loadrunner检查点总结分析
- gap_vector - 符合编辑器习惯的快速容器类算法
- hint提示的相关介绍
- Def和__declspec(dllexport)
- java多线程的几种实现方法
- 各种文件之间的转换
- Android开发环境搭建
- POJ 1375 Intervals(解析几何)
- 黑马程序员_Java基础_IO流(对象序列化和字符编码)
- 《Unix & Linux 大学教程》 - 第十八章 学习笔记
- 为什么打开网页速度慢,或者很难打开网页,无法收发邮件?
- zf多种页面跳转