我需要在 DLL 中使用在可执行文件中定义的类(DLL 和可执行文件由同一个编译器编译)。但我不希望这个类定义的源代码对 DLL 可用,只有声明。
一种可能的方法是使所有必要的类方法成为virtual
(以便 DLL 链接器不需要这些方法的定义)。这种方法的缺点:
- 我无法使用
new
(必须在可执行代码中创建附加函数)在 DLL 代码中创建导出类的对象。 - 我必须制作所有这些方法
virtual
,即使它们不需要这样做virtual
。
__declspec(dllexport)
有一种方法可以使用 Microsoft 的存储类扩展属性将类从 DLL 导出到可执行文件。有没有办法使用相同的技术将类从可执行文件导出到 DLL?
我的旧 Borland C 6 编译器不允许我在构建可执行项目期间创建导入库。(所以,在编译 DLL 时,链接器会为所有导入的非虚拟类方法提供未解决的外部错误消息。)这是这个编译器的限制,还是我遗漏了一些重要的东西?