【发布时间】:2009-12-16 12:55:15
【问题描述】:
我正在 Visual Studio 中创建一个 COM DLL。链接器为 DLL 生成一个导入库。我不需要导入库。
有没有办法告诉链接器不要生成它?
【问题讨论】:
-
导入库?导出库?会是哪一个?
-
抱歉:导入库包含命名导出。
标签: visual-c++ linker import-libraries
我正在 Visual Studio 中创建一个 COM DLL。链接器为 DLL 生成一个导入库。我不需要导入库。
有没有办法告诉链接器不要生成它?
【问题讨论】:
标签: visual-c++ linker import-libraries
九年后,这可能对 OP 没有用,但它可能对其他通过寻找解决方案来的人有用。
LINK.EXE 支持防止创建导入库的/NOIMPLIB 选项,即使在被链接的DLL 或EXE 中存在__declspec(dllexport) 例程。
转到项目属性,打开Linker 部分。最后一个选项是Command Line。选择它,底部有一个地方可以向链接器添加其他选项。在编辑栏输入/NOIMPLIB,保存并应用,会阻止.lib文件的创建。
-- 编辑--
不幸的是,虽然它确实阻止了 .lib 文件的创建,但凭经验我发现 .exp 文件仍然被创建。我会向 MS 提交错误报告,但根据他们开发工具团队过去的经验,尝试修复此类问题类似于尝试将巨石滚上山。
【讨论】:
这个答案似乎是解决方案: https://stackoverflow.com/a/15214141/660440
“使用包含带有 PRIVATE 关键字的导出函数的 .def 文件将告诉链接器跳过将符号放入导入库中。”
【讨论】: