禁止创建导入库 - Visual C++ 链接器

Pav*_*sky 5 c++ dll dllexport visual-c++ import-libraries

尽管源代码中有 (dllexport) 指令,是否有一种可能未记录的方法来阻止链接器创建IMPLIBDLL 或 EXE ?__declspec

不指定/IMPLIB会导致.LIB使用默认名称创建。

当 declspec 指令来自不受控制的第 3 方代码时,这一点很重要。例如,就是这种情况boost::serialization。一种可能的解决方案是“取消声明”DLL 导出。DEF 文件也无法做到这一点(AFAIK),因为它只能添加到导出列表中,而不能从其中删除。

Cyg*_*sX1 1

许多第三方代码并不__declspec(dllexport)直接使用,而是将其隐藏在宏下以对其进行控制。通常他们希望在dllexport和之间进行切换dllimport,具体取决于头文件包含的位置(在 dll 实现内部或由 dll 用户)

如果您尝试包含在库中就是这种情况,那么通过宏操作来更改此行为以满足您的确切需求应该不会太困难。

例如,boost::serialization检查config.hpp并查看如何控制它。