Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用DigiDoc++;使用Delphi的图书馆?_C++_Delphi_Delphi Xe2 - Fatal编程技术网

C++ 如何使用DigiDoc++;使用Delphi的图书馆?

C++ 如何使用DigiDoc++;使用Delphi的图书馆?,c++,delphi,delphi-xe2,C++,Delphi,Delphi Xe2,我想在Delphi中使用它。有demo exe。我使用Dependency walker打开了它,我看到它使用了digidocpp.dll,我看到void digidoc::initialize(class std::basic_string const&) 在Delphi中如何调用它?< /P> < P>你所引用的函数使用STL类,因此只能从C++代码中访问。您需要编写一个C++适配器DLL,并从Delphi中下载该文件。适配器在一个方面消耗C++接口,并提供了另一个可访问的接口。例如,您可能

我想在Delphi中使用它。有
demo exe
。我使用Dependency walker打开了它,我看到它使用了digidocpp.dll,我看到
void digidoc::initialize(class std::basic_string const&)

在Delphi中如何调用它?< /P> < P>你所引用的函数使用STL类,因此只能从C++代码中访问。您需要编写一个C++适配器DLL,并从Delphi中下载该文件。适配器在一个方面消耗C++接口,并提供了另一个可访问的接口。例如,您可能会公开COM兼容的接口


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

这种代理库应该使用与原始库相同的STL版本。否则,它很可能在第一次std::string销毁时失败。大概是在图书馆的文档中所说的。另外,看一下我的关于使用Delphi中C++类的文章。包装器将不得不隐藏STL类,但除此之外,它与。您可以使用COM包装器方法或扁平化方法。显然,他们曾经分发此库的COM和C版本。即使这些文件被“弃用”,如果它们仍然是功能性的,我会选择它们来围绕自己的C++版本编写自己的COM包装器,或者在它们的C++ API周围创建自己的过程(C类)包装器,这大概使用C++ STD::字符串类型。