Windows 编库相关问题

本文介绍在C/C++中如何通过特定宏定义来控制动态库(.dll)和静态库(.lib)的生成,无需使用.def文件。文章详细解释了如何通过条件编译预处理器指令来指定函数和类的导出方式,并说明了如何设置生成路径。

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

1. C代码编成静态库和动态库,如果没有.def文件,只生成动态库.dll, 不会生成静态库.lib.

     以下可以代替.def 文件:

     头文件中定义如下代码:

#if defined(UILIB_EXPORTS)
#	if defined(_MSC_VER)
#		define UILIB_API __declspec(dllexport)
#	else
#		define UILIB_API 
#	endif
#else
#	if defined(_MSC_VER)
#		define UILIB_API __declspec(dllimport)
#	else
#		define UILIB_API 
#	endif
#endif

函数接口加  宏UILIB_API 定义,导出函数。

2. C++代码编译静态库和动态库,没有试过用.def文件,试过上边提到的方法,没有定义 __declspec(dllexport)时只生成动态库,不生成静态库

定义宏UILIB_API ,类名用 宏定义定义  class  UILIB_API  类名

3.  库文件生成到对应的路径:

     动态库:属性-配置属性-链接器-常规-输出文件 (添加生成动态库路径包括动态库名称)

     静态库:属性-配置属性-链接器-高级-导入库(添加生成静态库路径包括静态库名称)   ? 不明白为啥在导入库 设置静态库的生成路径


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值