На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Ошибка инициализации приложения с gtk12x64

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Ошибка инициализации приложения с gtk12x64
 
Доброго времени суток!
После обновления библиотек с gtk12x32 от 11.09.17 на gtk12x64 от 20.09.18, на некоторых системах (Windows Server 2008 R2 x64) перестали запускаться приложения, использующие gtk, с ошибкой инициализации 0x0c150002. При этом сборка с использованием gtk12x32 от 20.09.18 работает исправно.

Библиотеки лежат в папке с приложением.

Подскажите, есть ли требования к установленным компонентам системы (предполагаю отсутствие необходимых компонент системы msvc или т.п.)? Или есть предположения с чем еще может связана такая ошибка (конфликт с библиотеками предыдущей версии или т.п.)?
 
Цитата
SpHINkSs написал:
После обновления библиотек с gtk12x32 от 11.09.17 на gtk12x64 от 20.09.18,
Приложение может быть либо х32, либо х64. И смешивать разрядность библиотек нельзя.
 
Приложение со старыми библиотеками (gtk12x32 от 11.09.17) имеет разрядность - 32 и работает.
Приложение с новыми библиотеками (gtk12x64 от 20.09.18) имеет разрядность - 64 и НЕ работает (см выше).
Приложение с новыми библиотеками (gtk12x32 от 20.09.18) имеет разрядность - 32 и работает.

Я при всем желании не смог бы заставить приложение искать библиотеки отличной разрядности - они же имеют разные имена (gisu*.dll и gisu64*.dll)! Переименованием я не занимался...
 
Цитата
SpHINkSs написал:
Приложение с новыми библиотеками (gtk12x64 от 20.09.18) имеет разрядность - 64 и НЕ работает (см выше).

Ранее у Вас была сборка x64?
И с библиотеками gtk12x64 от 11.09.18 она работала корректно?

Указанная ошибка проявляется на каком этапе работы программы?

Линковка gisu64access.dll выполняется статически или динамически?
Есть другие библиотеки из состава GTK, которые линкуются статически?
Как выполняется подготовка библиотеки для статической линковки?

Просьба всегда указывать среду разработки и какой именно GIS ToolKit Вы используете.
 
Здравствуйте!

Я правильно Вас понял, что при переводе приложения с платформы x32 на платформу x64 возникает ошибка выполнения программы?

При переносе наших программ на 64-битную систему обнаружили в сети интересную статью:
https://www.viva64.com/ru/a/0042/
В частности, в таблице N1. Модели данных приведены сведения об основных типах.
Например, указатели для ОС Windows в x32 занимают 4 байта, а в x64 - 8 байт.
Пришлось некоторое время анализировать и исправлять исходные тексты программ применительно к работе с указателями.  
 
Цитата
Денис Вицко написал:
И с библиотеками gtk12x64 x32 от 11.09.18 11.09.17 она работала корректно?
Цитата
SpHINkSs написал:
Приложение со старыми библиотеками (gtk12x32 от 11.09.17) имеет разрядность - 32 и работает.
Приложение с новыми библиотеками (gtk12x32 от 20.09.18) имеет разрядность - 32 и работает.

Ошибка на этапе запуска приложения, до создания окон.
Линковка, полагаю, динамическая, но этот этап скрыт от меня исходным кодом gtk free для delphi 10.2.
В каталоге рядом с приложением всегда лежат все библиотеки из поставки, и всегда одной сборки, соответствующей разрядности приложения.

Для сборки использую GIS ToolKit 12.5.3 на Embarcadero Delphi 10.2 (upd 3). x32 - работает, x64 - ошибка 0x0c150002.

Воспроизводится не на всех машинах, только на некоторых, но подробную информацию о них собрать возможности нет. Есть возможность, например, доставить пакет msvc или т.п. если это может помочь...
Изменено: SpHINkSs - 08.10.2018 11:26:25
 
Цитата
SpHINkSs написал:
В каталоге рядом с приложением всегда лежат все библиотеки из поставки, и всегда одной сборки, соответствующей разрядности приложения.
...
Воспроизводится не на всех машинах, только на некоторых...
...
Есть возможность, например, доставить пакет msvc или т.п. если это может помочь...

Библиотеки x64 (в отличие от x32) ГИС-ядра собраны на основе Microsoft Visual C++ 2008 (x64).
В комплекте с библиотеками GTK x64 включены необходимые библиотеки из состава распространяемого пакета Microsoft Visual C++ 2008.
Таким образом, если Вы поместили в папку с приложением всё содержимое архива, то этого должно быть достаточно.
Если нет, то действительно возможна ситуация, когда на отдельных ПК приложение может не запускаться (там где нет распространяемого пакета Microsoft нужной версии).

Также отмечу, что библиотеки GTK x64, содержащие визуальные диалоги, собираются в среде Embarcadero.
В связи с этим настоятельно рекомендуется не выполнять статическую линовку библиотек gisu64dlgs.dll, gisu64forms.dll, gisu64formse.dll, gisu64pasp.dll, gisu64restools.dll и др.

Цитата
SpHINkSs написал:
Линковка, полагаю, динамическая, но этот этап скрыт от меня исходным кодом gtk free для delphi 10.2.

Delphi всегда выполняет статическую ликовку всех библиотек, из которых Вы вызываете функции напрямую (не использую LoadLibrary).
Рекомендуется по возможности прямой вызов (т.е. статическую ликовку) выполнять только в отношении основной библиотеки - gisu64acces.dll, а функции остальных библиотек подгружать по мере необходимости с помощью LoadLibrary.

Цитата
SpHINkSs написал:
Или есть предположения с чем еще может связана такая ошибка (конфликт с библиотеками предыдущей версии или т.п.)?
Версии не должны смешиваться! Это может приводить к непредсказуемым последствиям.
Проверьте, не осталось ли у Вас библиотек от предыдущих версий в директориях поиска DLL операционной системой.
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности