使用_declspec(dllexport)导出函数

本文介绍了在VC2015中创建C++动态链接库(.dll)项目的详细步骤,包括新建项目、选择应用程序类型和选项、添加头文件和源文件等。还解释了使用extern \C\的原因,强调其必要性,否则Qt项目引用函数会出错。最后说明了保存项目并生成解决方案后,可在Debug目录下找到生成的.dll和.lib文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.启功vc2015,新建一个win32项目,项目名为Test。

2.在 windows桌面项目对话框上,选择应用程序类型“动态链接库(.dll)”在“其他选项”选择“空项目”

3.切换到解决方案视图,右击“头文件”,添加->新建项,选择头文件,改名称为Test.h单击添加。

4.切换到解决方案视图,右击“源文件”,添加->新建项,选择C++文件,改名为Test.cpp,单击添加。

打开Test.h写入

#ifndef _TEST_H
#define _TEST_H //防止重复引用

#ifdef __cplusplus
extern "C" {
#endif

_declspec(dllexport) void f();//声明函数f()为导出函数

#ifdef __cplusplus
}
#endif

#endif 

打开Test.cpp写入

#include "Test.h"
#include "windows.h" //为了使用MessageBox
#include "tchar.h" //为了使用_T

void f() {
	MessageBox(0 , _T("你好,世界"), 0, 0);
}

__cplusplus是cpp中的自定义宏,表示这是一段cpp代码。也就是说,上面一段代码的含义是:如果这是一段cpp代码,那么加入extern“C”{和}处里其中的代码。要明白为何使用extern"C",还得从cpp中对函数的重载处理开始说起。在C++中,为了支持重载机制,在编译生成的汇编代码中要对函数的名字进行一些处理,加入函数的返回类型等。在C中,只是简单的函数名字而已,不会加入其他的信息。也就是说,C++和C对产生的函数名字的处理是不一样的。

这里的exturn“C”必须又,否则Qt项目引用函数建辉出错,会提示函数找不到的错误码("DWORD dw = ::GetLastError();",得到dw=127)。

5.保存项目并生成解决方案,可以在解决方案目录下的Debug目录下发生生成的Test.dll,并且导入库文件Test.lib也在同一路径下。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值