转自http://www.cppblog.com/amyvmiwei/archive/2008/01/02/40203.html

DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明;另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。

首先创建 一个DLL程序,.cpp中
int __stdcall Add(int numa, int numb)
{
       return (numa + numb);
}

int __stdcall Sub(int numa, int numb)
{
        return (numa - numb);
}

然后创建一个.def的文件,在里面加上

;DllTestDef.lib : 导出DLL函数
;作者:----
LIBRARY DllTestDef
EXPORTS 
Add @ 1
Sub @ 2

最后创建一个测试程序:.cpp文件如下:
#include <iostream>
#include <windows.h>

using namespace std;

typedef int (__stdcall *FUN)(int, int);
HINSTANCE hInstance;
FUN   fun;

int main()
{
       hInstance = LoadLibrary("DLLTestDef.dll");
       if(!hInstance)
           cout << "Not Find this Dll" << endl;
       fun = (FUN)GetProcAddress(hInstance, MAKEINTRESOURCE(1));
       if (!fun)
       {
              cout << "not find this fun" << endl;
       }
       cout << fun(1, 2) << endl;
       FreeLibrary(hInstance);
       return 0;
}

说明:
.def文件的规则为:

  (1)LIBRARY语句说明.def文件相应的DLL;

  (2)EXPORTS语句后列出要导出函数的名称。可以在.def文件中的导出函数名后加@n,表示要导出函数的序号为n(在进行函数调用时,这个序号将发挥其作用);

  (3).def 文件中的注释由每个注释行开始处的分号 (;) 指定,且注释不能与语句共享一行。

转载于:https://www.cnblogs.com/zhangxiaosong/p/3258064.html

(补充知识)DLL 中 .DEF文件的使用相关推荐

  1. Dll (.a)(.def)文件之间的转换

    1. dll生成.def文件 一般安装完VS后可以搜索dumpbin.exe,拷贝到你的dll文件夹下, 执行命令行:dumpbin.exe /exports ***.dll > ***.def ...

  2. 多可知识管理系统中的文件密级

    在多可知识管理系统V5.0版本中,新增了"文件密级"这个功能,它其实是一种权限管理,通过将用户和文件都分成不同的保密级别,每个级别的用户可以接触到与自己同级和低于自己级别的文件,这 ...

  3. 使用Def文件导出dll

    前面我们介绍了dll的生成,大多数是使用extern "C"__declspec(dllexport)+函数名的方法导出dll.其实我们还有另一种方法来导出dll. 先介绍参考文献 ...

  4. 【转】extern “C“以及__declspec(dllexport) 讲解和def文件dll导出方法

    转自:https://blog.csdn.net/qing666888/article/details/41135245 一,__ declspec(dllexport): 将一个函数声名为导出函数, ...

  5. 使用def文件从dll导出和_declspec(dllexport)导出区别以及调用示例

    在C++中,我们可以通过 __declspec(dllexport) 将函数导出为Dll中供其它程序使用,例如: _declspec(dllexport) int add(int a, int b); ...

  6. 用VC和MinGW导出dll的def和lib(a)文件

    为什么80%的码农都做不了架构师?>>> 原文地址:http://zhangyafeikimi.iteye.com/blog/404580 有了dll文件需要导出def文件:  pe ...

  7. 芯片设计知识_芯片设计中工艺文件

    芯片设计知识 芯片设计中工艺文件 1. 工艺库文件简介 1. 工艺库文件简介 完整工艺库文件主要组成为: 1.模拟仿真工艺库,主要以支持spectre和hspice这两个软件为主,后缀名为.scs-- ...

  8. 使用def文件简化dll导出

    原文链接地址:http://www.cnblogs.com/TianFang/archive/2013/05/04/3059073.html 在C++中,我们可以通过 __declspec(dllex ...

  9. QT总结第3篇:如何在QT中添加.lib,.dll还有.h文件

    因为我在工作的过程中,使用的是第三方提供的库,但是如何将这些库添加到QT的工程中,是个问题,让我恼火了很久,怎么弄都是错的. 下面,我会对这个问题,进行叙述,希望其他人第一次遇到这种问题的时候,可以轻 ...

  10. 学习使用资源文件[11] - DLL 中的资源文件

    本例将把一张 bmp 图片, 以资源文件的方式嵌入 dll, 然后再调用. 第一步: 建一个 DLL 工程, 如图: 然后保存, 我这里使用的名称都是默认的. 第二步: 建一个资源原文件, 如图: 编 ...

最新文章

  1. 【预告】腾讯移动分析 MTA 即刻登陆 2017 GMTC 全球移动技术大会
  2. Java 11正式发布,新特性解读
  3. 使用Shell(bash) 来检查 git 本地某个分支是否存在
  4. iPhone应用程序编程指南(窗口和视图)
  5. [ubuntu setting]Change system language
  6. Unit23 Can I help you?
  7. 有前端基础学前端要多久?
  8. 剑指Offer之第一个只出现一次的字符
  9. 微软邀请IT管理人员及开发人员参加用户体验在线调研
  10. Silverlight 2 跨域访问控件与WebService的资料整理
  11. java 局部指定jdk版本_[Java教程]tomcat之一:指定tomcat运行时JDK版本
  12. 团队任务2:原型设计与UI设计
  13. 智能马桶盖松下好还是TOTO好?“资深”用户的对比贴来了
  14. 古代益智游戏汉诺塔java解决
  15. 【编译原理】第8讲 语法制导翻译(习题答案)——MOOC哈尔滨工业大学陈鄞
  16. 本科学位计算机要考吗,本科毕业需要考计算机二级吗
  17. 最新帝国CMS花生小说系统源码+花生日记引流导航模板+带采集工具
  18. c++并发编程实战 第一章
  19. Git push之后回滚
  20. S5PV210裸机之LCD

热门文章

  1. 【Java程序设计】运算符与优先级
  2. Mybatis中SqlNode的组合模式
  3. 201671010128 2017-10-08《Java程序设计》之接口与内部类
  4. 三大技术要素为互联网金融2.0保驾护航
  5. 一个比较好的多人网络游戏菜单程序。
  6. Thread之四:java线程返回结果的方法
  7. asp.net DataTable导出 excel的方法记录(第三方)
  8. Winform使用BackgroundWorker组件进行异步编程
  9. ubuntu下的jdk环境变量配置(解决sun jdk和open jdk的问题)
  10. MySQL中快速复制数据表方法汇总