Como especificar a versão de compatibilidade para dylib em projetos para iPhone?
-
12-09-2019 - |
Pergunta
Eu recentemente adicionou uma biblioteca estática (Mobclix) para o meu projeto de iPhone que me necessário para definir o SDK de base para 3.0. Esta biblioteca é reivindicada a ser compatível com 2.2 e, até agora parece que é verdade. Eu definir destino de implantação do projeto para 2.2. Não há problemas.
Agora, eu também estou usando libxml2 neste mesmo projeto. Aparentemente, o libxml2.2.dylib no OS 3.0 é mais recente do que no OS 2.X (versão 10 e 9, respectivamente). No entanto, o meu código que usa libxml2, já era compatível com a versão libxml2 incluído com OS 2.X. Desde que eu precisava para definir o SDK de base para 3.0, a versão "compatibilidade" / requisito mínimo versão / dependência é automaticamente definida para a versão mais recente do libxml2. Quando tento executar o aplicativo em OS 2, eu recebo este erro de execução (obviamente):
Dyld Error Message:
Library not loaded: /usr/lib/libxml2.2.dylib
Referenced from: /Users/Martijn/Library/Application Support/iPhone Simulator/User/Applications/4D5456DE-F297-4DF4-ACA6-DA8BBBBBA914/Luisterpaal.app/Luisterpaal
Reason: Incompatible library version: Luisterpaal requires version 10.0.0 or later, but libxml2.2.dylib provides version 9.0.0
É possível substituir a algum lugar exigência versão? Ou outras idéias para resolver este problema?
Solução
A versão de compatibilidade é definido de acordo com a versão embutida no dylib do SDK atual durante a compilação. Eu não encontrei uma maneira de alterar ou substituir esta.
No entanto, no destino no Xcode sob o título "Ligação com binário com bibliotecas" ramo há uma opção para vincular uma dylib "fracamente". Esta versão ignora a verificação no momento de carregar o dylib (runtime). É sua responsabilidade, em seguida, apenas para fazer chamadas para as funções existentes. Fazer chamadas para funções inexistentes irá travar o aplicativo.
Outras dicas
Aparentemente, houve uma mudança com SDK 3.0 que quebraram a compatibilidade com libxml. A Apple colocaram sobre ele aqui:
http://developer.apple.com/iphone/library /qa/qa2009/qa1659.html