En arrière-plan, je suis développeur d'un projet opensource, une bibliothèque c++ appelée openframeworks, qui est un wrapper pour différentes bibliothèques, comme opengl, quicktime, freeImage, etc. Dans la prochaine version, nous avons ajouté une bibliothèque c++ appelée POCO, qui est similaire à boost à certains égards car c'est une alternative pour la fonctionnalité de la bibliothèque de base java.
Je viens de remarquer, que dans cette dernière version où j'ai ajouté la bibliothèque POCO en tant que bibliothèque liée statiquement, les fichiers .obj produits lors de la compilation sont vraiment massifs - par exemple, plusieurs fichiers .obj pour des fichiers .cpp vraiment petits font 2mb chacun. Les fichiers .obj compilés au total font environ 12mb environ. En revanche, les exécutables produits sont petits - de 300k à 1mb.
En comparaison, la même bibliothèque compilée dans code::blocks produit des fichiers .obj d'une taille à peu près similaire à celle de l'exécutable - ils sont tous assez petits.
Est-ce qu'il se passe quelque chose lors de la liaison, et du processus .obj dans visual studio que je ne comprends pas ? Par exemple, est-ce qu'il effectue une sorte de pré-liage intelligent, ou autre chose, qui ajoute à la taille des .obj ? J'ai expérimenté un peu avec les paramètres, comme la liaison incrémentielle, etc, et je n'ai pas vu de changements.
Merci d'avance pour toute idée à essayer ou informations !
-zach
note: merci beaucoup ! Je viens juste d'essayer, dumpbin, qui dit "objet anonyme" et ne renvoie pas d'informations sur l'objet. Ceci pourrait en être la raison....
note 2, après avoir vérifié le lien ci-dessus, en retirant LTCG (génération de code au moment de la liaison - /GL), les fichiers .obj sont beaucoup plus petits et dumpbin les comprend. Merci encore !!