Цитата |
---|
Vladimir Sturza написал: Если вызывающая библиотеку программа скомпилирована в той же среде разработки, то ошибки нет. |
Скорее всего, это и есть ключ к решению проблемы.
Библиотека и вызывающий *.exe используют VCL и/или RTL библиотеки?
Если Вы хотите, чтобы DLL и EXE были независимы друг от друга, их надо собирать без runtime packages. Тогда у каждого будет свой экземпляр VCL и RTL.
В противном случае библиотека будет пытаться использовать экземпляр VCL уже загруженный в память процесса вызывающего модуля, а он от другой версии Embarcadero.
Отключение runtime packages, кстати, не очень хорошо, поскольку Embarcadero до сих пор не устранили утечку памяти при множественной загрузке VCL. Но это способ сделать библиотеку "независимой" от вызывающего процесса.
В опциях проекта уберите галку "Link with runtime packages", в "Runtime package import library" пропишите "vcl, rtl", в свойствах линковщика снимите галку "Link with Dynamic RTL".
Вот, кстати, рекомендации из readme.txt (см. п.1 и п.2)
Цитата |
---|
-------------------------------------------------------------------------------- Создание приложений в С++ Builder -------------------------------------------------------------------------------- При настройке проекта обращайте внимание на текущую платформу и вариант сборки. По возможности надо делать настройки для Варианта All Configurations-All Platforms.
1. В опциях проекта для раздела С++ Linker параметр Link with Dynamic RTL должен иметь значение false.
2. В опциях проекта для раздела Packages\Runtime Packages параметр Link with runtime packages должен иметь значение false, либо для раздела Packages для параметра Design packages надо отменить разрешение для пакета GIS ToolKit Professional.
3. В проект надо добавить библиотеки: - для x32 - gis32acces.lib; - для x64 - gis64acces.a.
4. Если в проекте используется статическая линкова библиотек ГИС-ядра (кроме gisuacces.lib или gisu64acces.a) для прямого вызова функций MAPAPI, то для таких библиотек надо в проект подключить аналогичный файл *.lib (*.a). Библиотеки находятся в директории Создать Gistool13\Dll\X32\lib (Gistool13\Dll\X64\lib). Пересоздать эти файлы можно выполнив команду Gistool13\Dll\X32\build_lib.bat (Gistool13\Dll\X64\build_a.bat). |