使用模块定义文件 (.def) 导入 DLL
Importing DLL using a module definition file (.def)
我想创建并发布一个 windows C 库。我读过有两种方法,一种是在头文件中使用 __declspec(dllexport) 和 __declspec(dllimport),另一种是使用模块定义文件 (link)。我不想修改头文件,所以我选择了第二个并创建了库,我已经确认它导出了所需的符号。
现在,当我发货时:
- 头文件是否仍然需要在每个导出的函数前面加上 __declspec(dllimport) 以便客户可以使用它?
- 我需要将模块定义文件与 dll 一起发送,还是 .lib 文件就足够了?
我当然已经用玩具示例测试了这两个问题,我相信我的两个问题的答案是否定的,但我想在发布任何东西之前与经验丰富的开发人员确认这一点。
我找到了 this 篇文章,但它写得很糟糕,我看不出任何意义。
您可以只向您的客户提供 .h 文件、.lib 导入库和 .dll 文件本身。他们不需要 .def 文件。
如果我记得,declspec 导入允许链接器进行较小的优化。关于导入 table 的一些事情。我稍后会查找并更新答案(如果我能找到它)。
我想创建并发布一个 windows C 库。我读过有两种方法,一种是在头文件中使用 __declspec(dllexport) 和 __declspec(dllimport),另一种是使用模块定义文件 (link)。我不想修改头文件,所以我选择了第二个并创建了库,我已经确认它导出了所需的符号。
现在,当我发货时:
- 头文件是否仍然需要在每个导出的函数前面加上 __declspec(dllimport) 以便客户可以使用它?
- 我需要将模块定义文件与 dll 一起发送,还是 .lib 文件就足够了?
我当然已经用玩具示例测试了这两个问题,我相信我的两个问题的答案是否定的,但我想在发布任何东西之前与经验丰富的开发人员确认这一点。
我找到了 this 篇文章,但它写得很糟糕,我看不出任何意义。
您可以只向您的客户提供 .h 文件、.lib 导入库和 .dll 文件本身。他们不需要 .def 文件。
如果我记得,declspec 导入允许链接器进行较小的优化。关于导入 table 的一些事情。我稍后会查找并更新答案(如果我能找到它)。