2015-12-01 8 views
-1

Я получил 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?Как использовать библиотеку DigiDoc C++ с Delphi?

+1

По-видимому, они использовали для распространения COM и прямой версии C этой библиотеки. Даже если они были «устарели» от них, если они все еще функционируют, я бы выбрал их для написания моей собственной оболочки COM вокруг своей версии на C++ или создания моей собственной процедурной (C-like) обертки вокруг своего C++ API, который предположительно использует C++ std :: string. –

ответ

2

Функция, на которую вы ссылаетесь, использует классы STL и поэтому доступна только из кода C++. Вам нужно будет написать DLL C++-адаптера и использовать это из Delphi. Адаптер использует интерфейс C++ с одной стороны и представляет интерфейс, доступный для Delphi, с другой. Например, вы можете открыть COM-совместимые интерфейсы.

Вам также понадобится документация и SDK для библиотеки C++.

+0

Такая прокси-библиотека должна использовать ту же версию STL, что и исходная библиотека. В противном случае, скорее всего, это произойдет при первом уничтожении std :: string. – Ari0nhh

+0

Да. Предположительно это указано в документации библиотеки. –

+0

Также взгляните на мою статью об использовании классов C++ из Delphi. Оболочке придется скрывать классы STL, но в остальном это похоже на то, что я описываю здесь (http://rvelthuis.de/articles/articles-cppobjs.html). Вы можете использовать подход обертки COM или подход сглаживания. –