2010-06-02 5 views
2

J'essaye d'ajouter le support de PNG à mon application et ainsi je veux inclure libpng. Je sais qu'il a besoin de zlib et donc j'ai téléchargé cela aussi. Je suis allé dans le dossier png/projects/vstudio et j'ai ouvert la solution. Je l'ai compilé et tout s'est bien passé. J'ai ajouté quelques en-têtes dans mon application et j'ai copié les fichiers lib. Mon programme est un dll écrit en C++ qui est ensuite utilisé depuis C#. Quand je l'exécute en C# il se plaint de ne pas trouver ma DLL (difficile si j'enlève la partie png ça marche bien). J'ai déjà eu ce problème et cela signifie généralement qu'une dépendance dll est incorrecte.
Maintenant ... libpng a compilé à la fois des fichiers .lib et des fichiers .dll. Les fichiers dll sont plus gros. Ma seule supposition est qu'il a besoin des fichiers dll, mais j'ai vu que les gens peuvent lier à libpng sans dll. Donc, mes questions sont: Comment puis-je compiler libpng (et zlib pour cette instance) en bibliothèques statiques et comment puis-je les inclure dans mes projets? J'ai cherché sur internet et je n'ai rien trouvé d'utile.Liaison libpng statique avec le studio visuel 2010

Répondre

3

Pour rendre toutes vos bibliothèques statiques, vous devez tout recompiler "à partir de zéro" en tant que bibliothèques statiques.

Cela signifie simplement que vous devez créer un ensemble de projets pour chaque bibliothèque que vous avez dans votre séquence et définissez le type de sortie bibliothèque statique. Ensuite, vous devez éliminer les dépendances entre bibliothèques (vous devez donc lier la sortie de certains projets à un autre projet, par exemple si votre bibliothèque "libpng" utilise "libzip", cela signifie que vous devez d'abord compiler « libzip » et relier cette sortie (bibliothèque statique) à votre projet « libpng ».

en fin de compte très vous auriez un grand ensemble de bibliothèques statiques compilées pour votre plate-forme, que vous pouvez utiliser dans vos projets


Aussi pour mentionner, essayez de googler plus attentivement. Je suis sûr que quelqu'un a fait cela et vous auriez probablement besoin de télécharger un paquet de fichiers .lib pour votre plate-forme (je sais que souvent le "dev" bundle de bibliothèques inclut seulement une bibliothèque d'importation couplée avec .dll approprié fichier, mais il y a beaucoup de passionnés comme vous :)

+0

Vraiment recompiler ce truc n'est pas si difficile - créer un projet, ajouter tous les fichiers. Et pas plus de problèmes avec différentes versions d'exécution ou quelque chose comme ça. – sharptooth

+1

Eh bien, essayez de construire complètement 'gtkmm' en" créant un projet et en ajoutant des fichiers ";) * Parfois, toutes ces dépendances internes peuvent être une vraie douleur dans le cul. * –

+0

Peut-être, mais nous construisons zlib et SQLite sans aucun tracas. – sharptooth