写DLL 时,加与不加 "Extern C"区别

翻阅笔记系列


加与不加的区别, 我们可以过 depends 工具来查看;
extern c 方式导出的函数, 在 DLL 中函数名就是我们定义的名字;
在C++中, 不使用exern c 方式导出, 在 DLL 中函数名字已经不是我们定义时的名字了。 添加了一些特殊符号。

如果不注意这点, 有时会DLL 调用失败还不明其原因。
所以写DLL 时, 写完了拿工具看一下。

这个工具安装VS是会附带,我的路径是

C:\Program Files\Microsoft Visual Studio\Common\Tools

百度云链接:链接:http://pan.baidu.com/s/1kUQAz7D
密码:acox
使用方法:把DLL拖进去就好了;
这里写图片描述


这里写图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个基本的减法DLL的MFC代码示例。 首先,我们需要创建一个MFC DLL项目。在Visual Studio中,选择File > New > Project > Visual C++ > MFC > MFC DLL。 然后,我们需要在项目中添两个函数,一个用于法,一个用于减法。 ```cpp // 法函数 extern "C" __declspec(dllexport) int Add(int a, int b) { return a + b; } // 减法函数 extern "C" __declspec(dllexport) int Sub(int a, int b) { return a - b; } ``` 这两个函数都是C函数,需要使用extern "C"修饰符声明,以便正确导出到DLL中。 在项目属性页的配置中,我们需要将项目类型设置为“DLL”,并将导出符号设置为“Add”和“Sub”。 现在,我们可以编译这个DLL并使用它。在另一个应用程序中,我们可以使用LoadLibrary和GetProcAddress函数来载并调用这些函数。 ```cpp // DLL HMODULE hDll = LoadLibrary(L"AddSub.dll"); if (hDll != NULL) { // 获取Add函数地址 FARPROC pAdd = GetProcAddress(hDll, "Add"); if (pAdd != NULL) { // 调用Add函数 int result = ((int(__stdcall*)(int, int))pAdd)(2, 3); printf("2 + 3 = %d\n", result); } // 获取Sub函数地址 FARPROC pSub = GetProcAddress(hDll, "Sub"); if (pSub != NULL) { // 调用Sub函数 int result = ((int(__stdcall*)(int, int))pSub)(5, 3); printf("5 - 3 = %d\n", result); } // 卸载DLL FreeLibrary(hDll); } ``` 这将输出以下内容: ``` 2 + 3 = 5 5 - 3 = 2 ``` 现在,我们已经成功地创建了一个基本的减法DLL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值