【发布时间】:2009-02-27 13:21:38
【问题描述】:
我需要在 DLL 中使用在可执行文件中定义的类(DLL 和可执行文件由同一个编译器编译)。但是我不希望这个类定义的源代码对 DLL 可用,只有声明。
一种可能的方法是将所有必要的类方法设为virtual(这样DLL 链接器就不需要这些方法的定义)。这种方法的缺点:
- 我无法创建导出类的对象
在使用
new的 DLL 代码中(必须 在中创建附加功能 可执行文件的代码)。 - 我必须使所有这些方法
virtual, 即使他们不需要 是virtual。
有一种方法可以使用 Microsoft 的 __declspec(dllexport) storage-class 扩展属性将类从 DLL 导出到可执行文件。
有没有办法使用相同的技术将类从可执行文件导出到 DLL?
我的旧 Borland C 6 编译器不允许我在构建可执行项目期间创建导入库。 (因此,在编译 DLL 时,链接器会为所有导入的非虚拟类方法提供未解决的外部错误消息。)这是这个编译器的限制,还是我遗漏了一些重要的东西?
【问题讨论】: