J'essaye de compiler une bibliothèque de JNI qui emploie le carbone de la ligne de commande.Quand sont -framework et -I/System /.../ Example.framework/Headers/needed?
Si je ne -I/System /.../ JavaVM.Framework/Headers /, il ne trouve aucun des types jni, et donne des erreurs. Si je ne fais que -I/System /.../ FlatCarbon.framework/Headers, mais pas "-framework Carbon", il compile bien, mais l'éditeur de liens donne une erreur sur un symbole indéfini.
Si je compile avec -Cadre Carbon, ça marche bien, mais il s'avère que le -I .../FlatCarbon.framework/Headers/était totalement inutile! Cela fonctionne de la même manière avec ou sans. Maintenant, tout a un sens, sauf pour ce qui suit:
Si je -framework JavaVM, mais ne pas inclure le répertoire d'en-tête, alors ne peut pas trouver les types jni!
Cela semble totalement incohérent. Pour un framework, le -I est requis, et le -framework est optionnel, pour l'autre, le -framework est requis, et -I est optionnel. Comment est-ce ainsi? Quelqu'un pourrait-il expliquer comment fonctionne l'option -framework? JavaVM est-il un cas particulier? Je publie partiellement cette question par curiosité, mais aussi pour aider toute personne qui cherchait une solution similaire, car au moins avec mon google-fu, je n'ai pas pu trouver quelque chose expliquant les frameworks de la commande , ou comment lier aux bibliothèques système avec gcc sur la ligne de commande. gcc --help ne documente même pas le cadre, et tout ce que j'ai pu trouver était de développer avec xcode.