动态链接库(DLL)总结---解决名称粉碎问题(3)

来源:互联网 发布:文都医考app软件下载 编辑:程序博客网 时间:2024/05/17 04:57

名称粉碎:C++是支持函数重载,对于多个函数来说,其函数的名称是一样的,为了加以区分,在编译链接时,c++会按照自己的规则篡改函数的名称。这一过程成为“名称粉碎”,也有的称为“名称改编”。不同的编辑器会采用不同的编辑器进行改编。

我们使用LoadPE工具查看动态链接库(DLL)总结---简单使用(1)中生成的dll,查看下名称粉碎是个什么效果。

操作步骤如下:

1)加载要查看的dll


2选择目录


3)在目录选项卡中打开如下图位置

4)就可以看到名称粉碎的效果了

如果我们不想产生名称粉碎该如何做呢?

1)在MyDllOne.h文件中的代码前面加上extern "C",如下

extern "C"  __declspec(dllexport)  int add(int, int);extern "C" __declspec(dllexport)  int sub(int, int);

2)我们再使用LoadPE查看,效果如下:


  


注意:如果我们在生成dll的时候,使用了extern “C”,那么在使用该dll的时候也要使用,使用代码如下:

#include "stdafx.h"#include <windows.h> #pragma comment(lib,"Win32Dll1.lib") extern "C"  __declspec(dllimport)  int add(int, int);<span style="white-space:pre"></span>//含有extern "C"extern "C"  __declspec(dllimport)  int sub(int, int);int _tmain(int argc, _TCHAR* argv[]){printf("5+2 =%d \n", add(5, 2)); printf("5-2 =%d \n", sub(5, 2));system("pause");return 0;}


0 0
原创粉丝点击