Ошибка выполнения R6034 при попытке использовать Firebird Server 2.1 в Windows Server 2003 (невозможно загрузить gds32.dll)
Я получаю эту ошибку времени выполнения R6034 при попытке запустить приложение на Windows 2003 Server.
Библиотека времени выполнения Microsoft Visual C++
Ошибка выполнения!
R6034
Приложение попыталось загрузить библиотеку времени выполнения C неправильно. Пожалуйста, обратитесь в службу поддержки приложения для получения дополнительной информации.
На этом сервере был установлен Firebird 2.0, и он работает, я удалил его и установил Firebird 2.1, но Firebird 2.1 вообще не работает.
Когда я использую instclient, чтобы увидеть, какая dll установлена, он возвращает правильный результат, то есть версию Firebird, которую я использую 17910:
>instclient.exe query gds32
Installed GDS32.DLL version : 6.3.1.17910 (shared DLL count 1)
Я также искал другие dll, которые могут быть потеряны в системе, но их нет, система чистая, но я не могу заставить Firebird работать.
Если вам интересно, зачем мне нужен gds32, это потому, что я использую компонент TIBBackupService и он использует gds32 по умолчанию (или, что еще хуже, жестко запрограммировано), поэтому его нельзя заменить на fbclient.dll.
Любые идеи для решения этой проблемы приветствуются, спасибо.
2 ответа
Скорее всего, вы решили создать наследство gds32.dll
в каталоге system32, но необходимая версия библиотеки времени выполнения MSVC не установлена. Используйте Microsoft Dependency Walker в 32-битной или 64-битной версии (в зависимости от версии сервера Firebird), чтобы проверить, какая DLL не найдена. В любом случае, установка распространяемого пакета MS должна помочь.
Возможно, ошибка связана с тем, что вы загружаете библиотеку C времени выполнения по пути, а не из каталога SxS. Вам нужно будет добавить манифест в ваш exe-файл, который информирует загрузчик ОС о зависимости. Посмотрите на этот ответ, который, хотя и не имеет прямого отношения, указывает на то, как можно исправить R6034. Обратите внимание, что ошибка относится к библиотеке времени выполнения C++, а не к GDS32.dll. Хотя другой вопрос не упоминает R6034 напрямую, я ответил на этот вопрос, и была R6034, которая была основной причиной.