Compilation de Helloworld.c fonctionne; Mais quand j'essaie d'ajouter des bibliothèques externes, elle étouffe. p>
J'ai ajouté les fichiers .a et .dll à mes "bibliothèques"; Ajoutez le chemin du chemin du chemin et de la bibliothèque. J'ai également placé les fichiers inclus et configuré l'inclusion. Les bibliothèques que j'ai dit être compatibles avec Win / Mingw. Ils ont également un téléchargement différent pour MSVC qui fonctionne. P>
frustrant. Le LD.exe donne le chemin complet et évidemment là-bas et j'ai des autorisations pour les lire / écrire. Je les ai également inclus sans chemin (ils sont dans le chemin de la bibliothèque et le chemin). P>
Je ne comprends pas pourquoi cela ne fonctionne pas. P>
C: / MINGW / BIN /. ./lib/gcc/mingw32/4.5.2/../../../../merw32/bin/ld.exe: Impossible de trouver -lc: \ rhino \ data \ lib \ glfw.dll
C: / MINGW / BIN /../ lib / gcc / mingw32 / 4.5.2 /../../../../ MINGW32 / BIN / LD.EXE: Impossible de trouver -LC: \ Rhino \ Data \ lib \ libglfwdll.a
C: / MINGW / BIN /../ lib / gcc / mingw32 / 4.5.2 /../../../../ MINGW32 / BIN / LD.EXE: Impossible de trouver -LC: \ Rhino \ Data \ lib \ libglfw.a p> mises à jour: p> Je les ai même ajoutés à mon c: \ Mingw \ Lib chemin et ça ne peut toujours pas Trouvez-les. P> ul>
4 Réponses :
Essayez ceci:
gcc -LC:\rhino\data\libs -LC:\rhino\data\lib -oTestC.exe TestC.o -lglfw libglfw.a libglfwdll.a
C: \ rhino \ eprojects \ testc \ débogage> gcc -lc: \ mingw \ lib -otestc.exe testc.o -lglfw libglfw.a libglfwdll.a gcc: libglfw.a: aucun fichier ou répertoire de ce type GCC: libglfwdll.a : Aucun fichier ou répertoire de ce type C: \ rhino \ eprojects \ testc \ débogage> gcc -lc: \ mingw \ lib -testc.exe testc.o -lglfw libglfw libglfwdll gcc: libglfw: aucun fichier ou répertoire de ce type GCC: libglfwdll: non ce fichier ou annuaire C: \ rhino \ eprojects \ testc \ débogage> gcc -lc: \ mingw \ lib -otestc.exe testc.o -lglfw -llibglfw.a libglfwdll.a gcc: libglfwdll.a: aucun fichier ou répertoire de ce type
C: \ rhino \ eprojects \ testc \ débogage> gcc -lc: \ mingw \ lib -testc.exe testc.o -lglfw -llibglgglfw.a -llibglfwdll.achanlibglfwdll.ac:/mib/bin/../lib/gcc/mingw32 /4.5.2/../../../../mingw32/bi n / ld.exe: impossible de trouver -llibglfw.ac:/mingw/bin/../lib/gcc/mingw32/4.5. 2 /../../../../../ MINGW32 / BI N / LD.EXE: impossible de trouver -LLIBGLFWDLL.A COLLECT2: LD renvoyé 1 statut de sortie
C: / MINGW / BIN /../ LIB / GCC / MINGW32 / 4.5.2 /../../../../ MINGW32 / BI N / LD.EXE: ne peut pas finc: \ rhino \ eprojects \ TESTC \ DEBUG> GCC -LC: \ MINGW \ LIB -OTESC.ELE TESTC.O -LGLFW -LLIBGLFW -LLIBGLFWDLL C: / MINGW / BIN /../ LIB / GCC / MINGW32 / 4.5.2 /../ .. /../../mingw32/bi n / ld.exe: impossible de trouver -llibGlfw c: / mingw / bin /../ lib / gcc / mingw32 / 4.5.2 /../../../ ../mingw32/bi n / ld.exe: impossible de trouver -llibglfwdll Collection2: LD renvoyé 1 sortie Statutd -llibGlfw.ac:/mingw/bin/../lib/gcc/mingw32/4.5.2/../ ../../../mingw32/bi n / ld.exe: impossible de trouver -llibglfwdll collect2: LD renvoyé 1 statut de sortie
Mon expérience (qui n'inclut pas comment cela pourrait être configuré dans Eclipse) est que Je ne sais pas que le fichier ld code> (que GCC invoquera) veut les noms de libéro sans le préfixe
lib liber code> ou le
.a code> extension. Essayez:
GLFW.DLL code> doit être répertorié comme une bibliothèque; La bibliothèque d'importation pour cette DLL (je suppose que libglfwdll.lib) devrait s'occuper de la liaison à la DLL. P> P>
Vous pouvez également créer un lien vers DLL dans des versions récentes de GCC. Vous devez ajouter le chemin DLL à l'option -l code> également.
@RUBENVB: intéressant - je ne le savais pas. Maintenant, les questions sont les suivantes: pourquoi MSVC ne vous oblige-t-il pas à le faire et ce qui a pris si longtemps?
Eh bien, vous pouvez, via LoadLibrary CODE> et Messiness associé. Quant à ce qui a pris si longtemps; Je ne sais pas exactement quand il a été mis en œuvre, mais il semble quelque part avant / autour de 2007, à travers de vieux postes de forum ...
Michael Burr a souligné la bonne façon de référencer les bibliothèques sur la ligne de commande. Le chemin de la bibliothèque est donné avec le commutateur Une dernière chose à signaler est que vous essayez de créer un lien avec la version statique (libglfw.a) et la version dynamique (GLFW.DLL) de la bibliothèque, qui sont toutes deux incluses dans le téléchargement, au même temps. Au lieu de cela, vous devez en choisir un, en fonction de vos besoins / des désirs, et de lier seulement celui-là. P>
La liaison contre la version statique est simple. Il suffit d'ajouter Pour utiliser la bibliothèque dynamique, vous devez créer un lien avec la bibliothèque d'importation pour la DLL ( -L code> et le nom de la bibliothèque avec le commutateur
-L code> (nom de la bibliothèque étant le nom du fichier, sans La partie
lib code> au début et le
.a code> suffixe à la fin). P>
-lglfw code> à la ligne de commande. P>
libglfwdll.a code>), à l'aide du commutateur
-LGLFWDLL code> et omettez la DLL. lui-même de la commande de liaison. Fondamentalement, la bibliothèque d'importation ne contient aucun code d'objet, mais seulement des définitions; Le code actuel est dans la DLL. La DLL sera liée de manière dynamique au moment de l'exécution. (Pour que cela fonctionne, le système doit être capable de trouver la DLL; c'est-à-dire qu'il doit figurer dans le répertoire de travail actuel, dans un répertoire figurant sur le chemin du chemin ou son répertoire doit être ajouté à une variable d'environnement spécial utilisée. Pour cette chose; mais pour que cela soit important, vous devez d'abord réussir à construire l'exécutable.) p>
Bien que cela soit assez ancien, je suis tombé sur cette question d'un problème récent et la solution est très différente de ce qui précède, alors partageez-la.
Dans mon cas, en raison de l'ordre de coquillage $ ( Changement de la commande de chemin de chemin résolu: P> echo $ chemin code>),
gcc code> utilisait
ld code> à partir de l'installation anaconda, et ce
ld code> n'a pas pu trouver une bibliothèque particulière. P>
export PATH=/usr/bin:$PATH
Assurez-vous d'avoir ajouté les bibliothèques au chemin de la bibliothèque Eclipse.
-L "C: \ Rhino \ Data \ Libs" -L "C: \ Rhino \ Data \ Lib"
Quelle est la ligne de commande
ld code>?
Il n'y en a pas, c'est GCC:
GCC -LC: \ Rhino \ Data \ Libs -LC: \ Rhino \ Data \ Lib -oTestC.exe testc.o -lglfw.dll -llibglgglfw.a -llibglibglfwdll.a ### Ils sont dans ce répertoire: C: \ Rhino \ Data \ Lib