【问题标题】:How to use DigiDoc C++ library with Delphi?如何在 Delphi 中使用 DigiDoc C++ 库?
【发布时间】:2015-12-01 06:16:30
【问题描述】:

我得到了http://www.id.ee/index.php?id=36484 我想在 Delphi 中使用它。有demo-exe。我使用 Dependency walker 打开它,我看到它使用 digidocpp.dll 我看到 void digidoc::initialize(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &) 在 Delphi 中如何调用它?

【问题讨论】:

  • 显然他们曾经分发这个库的 COM 和直接 C 版本。即使那些被他们“弃用”,如果它们仍然有效,我会选择它们而不是围绕他们的 C++ 版本编写我自己的 COM 包装器,或者围绕他们的 C++ API 创建我自己的过程(类 C)包装器,大概使用C++ std::string 类型。

标签: c++ delphi delphi-xe2


【解决方案1】:

您引用的函数使用 STL 类,因此只能从 C++ 代码访问。您将需要编写一个 C++ 适配器 DLL 并从 Delphi 使用它。适配器一方面使用 C++ 接口,另一方面提供可供 Delphi 访问的接口。例如,您可能会公开 COM 兼容接口。

您还需要 C++ 库的文档和 SDK。

【讨论】:

  • 这样的代理库应该使用与原始库相同的 STL 版本。否则它很可能在第一次 std::string 破坏时失败。
  • 是的。大概是在图书馆的文档中说明的。
  • 另外,看看我关于使用 Delphi 的 C++ 类的文章。包装器必须隐藏 STL 类,但除此之外,它类似于 what I describe here。您可以使用 COM 包装器方法或扁平化方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多