1) 没有。Google for DLL vs BPL。这个话题从 1997 年开始反复出现。BPL 是针对 Pascal 的。DLL 适用于 Windows。Windows 中没有对象。但是有 COM 接口(IUnknown 与 COM 定义的类型,支持您的 Pascal 类型,不存在事件回调)
您还可以尝试“JCL except_stack_list 可以为 dll 工作吗?”线程在http://newsportal.delphi-jedi.org/thread_frameset.php?group=jedi.jcl
2)通过IUnkown
和COM标准化的数据类型。除此之外,您覆盖编译器的类型安全,这意味着您应该实现并提供自己的 pascal-to-binary 安全层。
3)取决于您的代码,包括被调用者和调用者。如果两者都是可重入的,那么它们是。如果有人不是 - 它会触发错误。
4)取决于你想要达到什么。
如果您想体验 DLL:任何汇编程序书籍,然后 Delphi 手册关于在 asm 而不是 Pascal 中实现过程,特别是关于所有这些数据类型在不同 Delphi 版本中的二进制表示。如果你否认 Delphi 标准的类型安全,那么你需要提供你自己的。
如果你想体验 COM,那么任何关于 COM 的书和关于实现和使用 COM 对象的 Delphi 手册。
如果您想体验 BPL,请阅读有关运行时包的 Delphi 手册。他们是德尔福的一等公民,额外的书籍是可选的。