D中的模板和共享库

Meh*_*dad 8 templates d shared-libraries

刚才意识到:

D中几乎所有东西都变得模糊不清.这真棒为一个可执行文件,但是这是如何工作的共享库?如果在编译之前没有生成代码,那么D不能创建使用模板的共享库,可以吗?(例如,Phobos 必须是静态的 - 没有别的办法,对吧?)

Tra*_*s3r 8

嗯,这与C++代码一样.

只能预编译非模板化部件.其他所有内容都必须提供完整的源代码.

作为共享或静态库的Phobos在这里没有太大区别.由于dmd的共享库问题,它仍然是静态的.

  • 共享库不仅适用于较小的二进制大小.没有它们你不能做插件.为了使插件运行良好,插件和宿主应用程序使用的所有库也应该是共享库. (4认同)
  • 当然可以分享.只是模板化的部分不共享.这就是为什么模板必须在C++的头文件中的原因.出于完全相同的原因,这是完全相同的问题.因此,就模板而言,D可以像C++一样轻松地拥有共享库.D中共享库的问题来自编译器和垃圾收集器的问题,最终将解决这些问题.因此,最终,它与C++几乎完全相同. (2认同)