Runtime Error R6034 ao tentar usar Firebird Server 2.1 no Windows Server 2003 (Não é possível carregar gds32.dll)
-
19-09-2019 - |
Pergunta
Estou recebendo este erro de execução R6034 quando tento executar um aplicativo em um Windows 2003 Server.
Microsoft Visual C ++ Runtime Library
Runtime Error!
R6034
Um aplicativo fez uma tentativa de carregar a biblioteca C runtime incorretamente. Entre em contato com o equipe de suporte do aplicativo para obter mais informações.
Este servidor tinha Firebird 2.0 instalado, e ele funciona, eu desinstalei e instalado Firebird 2.1, mas Firebird 2.1 não funciona em todos.
Quando eu uso instclient para ver qual dll é instalado, ele retorna o resultado correto, que é a versão Firebird Estou usando 17910:
>instclient.exe query gds32
Installed GDS32.DLL version : 6.3.1.17910 (shared DLL count 1)
Eu também olhou para o outro dll que poderia ser perdida no sistema, mas não há nada, o sistema está limpo, mas eu não posso começar Firebird ao trabalho.
Se você está se perguntando por que eu preciso do gds32, é porque eu uso o componente TIBBackupService e usa gds32 por padrão (ou pior, codificado), por isso não pode ser alterado para fbclient.dll.
Todas as idéias para resolver este são bem-vindas, obrigado.
Solução
Muito provavelmente você optou por criar o gds32.dll
legado no diretório system32, mas a versão necessária da biblioteca de tempo de execução MSVC não está instalado. Use o Microsoft Dependency Walker em qualquer de 32 bits ou a versão de 64 bits (dependendo da versão do servidor Firebird) para verificar qual DLL não foi encontrado. Em qualquer caso, a instalação dos MS pacote redistribuível deve ajudar.
Outras dicas
O erro é provavelmente porque você está carregando uma DLL C de tempo de execução do caminho, em vez de partir de um diretório SxS. Você vai precisar adicionar um manifesto à sua exe que informa o carregador OS sobre a dependência. Olhe para esta resposta que, embora não diretamente relacionados, aponta para como você pode corrigir R6034. Note-se que o erro refere-se a biblioteca de tempo de execução do C ++, não GDS32.DLL. Embora a outra pergunta não menciona R6034 diretamente, eu respondi a essa pergunta e houve um R6034 que foi a causa raiz.