Probablement je manque ici quelque chose mais c'est ma première fois sur Windows que j'ai besoin de relier statiquement une lib de sorte que l'exécutable ne dépende pas d'un DLL. Je le fais avec LIBPNG.Lier une lib statique dans VC++
Je fais comme ça:
I ajouté en-têtes libpng: C/C++ -> supplémentaires include
répertoire de la bibliothèque Ajouté à l'éditeur de liens: Linker -> Général -> supplémentaires Répertoires de bibliothèques
Ajouté dépendances supplémentaires éditeur de liens: linker -> entrée
compiler l'exe ok.When appeler Je reçois:
« Le programme ne peut pas démarrer car libpng16.dll est absent de votre ordinateur . »
Ce qui signifie que libpng n'a pas été compilé dans l'exécutable. Comment puis-je corriger cela sans reference the whole pnglib project code into my executable project?
"libpng16.dll" dans l'erreur indique que ceci est * pas * une bibliothèque statique, mais une bibliothèque liée dynamique. Vous pouvez être bien si vous copiez simplement la DLL dans le même dossier que votre exécutable. Dans le cas contraire, vous devez vous assurer que la bibliothèque prend en charge la liaison statique, puis lier le fichier * correct * .lib pour cela. – crashmstr
@crashmstr Je ne veux pas faire cela. Je veux que libpng soit compilé dans le programme final. –
J'ai édité mon commentaire pour inclure une déclaration que vous devez vérifier: 1. libpng supporte la liaison statique et 2. vous liez avec le .lib correct qui est la bibliothèque statique et non celui qui "pointe" vers la DLL. – crashmstr