Rechercher : dans
Par :

Probleme ligne de commande gcc

Dernière réponse le 13 mar 2009 à 16:20:26 Div, le 12 mar 2009 à 22:13:10 
 Signaler ce message aux modérateurs

Bonjour,

j'ai un soucis, j'imagine de compilation:
j'ai un fichier c++ (test.cpp par exemple), 2 headers (h1.h et h2.h) et une dll (h1.dll)
j'ai bien les #include "h1.h" dans mon fichier cpp.
lors de la compilation avec gcc, jai des erreurs du genre "undefined reference to" puis le nom de plusieurs fonctions dont les prototypes sont dans h1.h.
J'arrive à compiler test.cpp pour obtenir test.o, mais je n'arrive pas à faire la suite pour obtenir le test.exe.
Quelle serait la/les commandes avec gcc pour ça? j'ai l'impression qu'il y a un probleme de commande gcc / link...

Merci de votre aide

Configuration: Vista

Meilleures réponses pour « Probleme ligne de commande gcc » dans :
[Windows] Changer l'adresse IP en ligne de commande avec Netsh VoirSous les systèmes Windows 2000/Windows XP et supérieurs, il est possible de modifier les paramètres TCP/IP à partir d'une simple ligne de commande, afin par exemple d'automatiser cette tâche grâce à un script. Ceci est possible grâce à l'outil...
ImageMagick - Manipuler les images en ligne de commande VoirImageMagick est un formidable outil en ligne de commande qui permet de manipuler les images. L'avantage de cet outil est qu'il permet: d'automatiser les travaux sur les images (cela évite d'avoir à faire certaines manipulations dans...
Redémarrer l'interface réseau en ligne de commande VoirDans le cas d'une mise en place d'un réseau, notamment pour vérifier qu'un serveur DHCP attribue correctement les adresses IP, il peut être plus rapide de redémarrer l'interface réseau en ligne de commande plutôt que par l'interface graphique. Ces...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
Utilisation de la commande ftp VoirLe protocole FTP FTP (File Transfer Protocol) est un protocole, c'est-à-dire un langage standard de communication entre deux machines, permettant à des machines de types différents (ou dont le système d'exploitation est différent) de transférer des...
Les protocoles de messagerie (SMTP, POP3 et IMAP4) VoirIntroduction à la messagerie électronique Le courrier électronique est considéré comme étant le service le plus utilisé sur Internet. Ainsi la suite de protocoles TCP/IP offre une panoplie de protocoles permettant de gérer facilement le routage...

1

fiddy, le 12 mar 2009 à 22:42:56

Salut,
Tu utilises un compilateur C pour du C++. Utilise plutôt g++.
Sinon, as-tu pensé à utiliser le switch l de gcc pour linker ta dll ?
Cdlt
Google is your friend

Répondre à fiddy

2

Div, le 13 mar 2009 à 08:24:59

J'avais essayé avec -l h1.dll ou -L h1.dll dans la ligne de commande mais j'avais les "undefined reference".
j'ai aussi essayé avec un projet sous Dev-C++, lors de la compilation (cette fois sans ligne de commande mais en cliquand sur le bouton) il me ressortait les mêmes erreurs.

Répondre à Div

3

dubcek, le 13 mar 2009 à 09:29:18

Hello
après -L il faut un nom de répertoire contenant les librairies
avec -l library il cherche une librairie appellée liblibrary.a (sur windows, je ne sais pas)
-I dir précise un répertroire ou se trouvent les .h

Répondre à dubcek

4

fiddy, le 13 mar 2009 à 11:34:27

Utilise : gcc ... -lh1 (L minuscule et ne spécifie pas le .dll).
Google is your friend

Répondre à fiddy

5

Div, le 13 mar 2009 à 11:44:06

J'ai la même réponse...

Répondre à Div

6

fiddy, le 13 mar 2009 à 12:05:10

Sait-on jamais, gcc -L./ -lh1
Si ça ne marche pas, dis-nous si tu programmes sur Vista ou sur cygwin, et autre.

Cdlt
Google is your friend

Répondre à fiddy

7

Div, le 13 mar 2009 à 12:15:02

La commande "gcc -L./ -lh1" me retourne un autre probleme maintenant:

C:/MinGW/bin...../libmingw32.a(main.o)(.text+0x97):main.c: undefined reference to 'WinMain@16'

il n'y a plus qu'un "undefined reference" en erreur, et ce n'est pas le même qu'avant

Répondre à Div

8

Div, le 13 mar 2009 à 12:16:35

J'ai oublié:
je suis sous windows xp, j'ai voulu travailler sous eclipse + CDT +MinGW +MSYS, mais j'arrive pas à configurer correctement la compilation donc je suis allé compiler à la main dans le répertoire de mon projet

Répondre à Div

9

fiddy, le 13 mar 2009 à 13:05:36

Déjà, ça serait bien que tu travailles avec g++ au lieu de gcc, ça permettrait d'éliminer toutes autres sources d'erreurs. Et retente g++ -ldll -L./ (si bien sûr ta dll est dans le répertoire courant)
Sinon que donne : g++ test.c -o test.exe h1.dll ?
Cdlt
Google is your friend

Répondre à fiddy

10

Div, le 13 mar 2009 à 13:13:54

La premiere me renvoie l'erreur avec WinMain
la seconde reliste tous les undefined reference

Répondre à Div

11

fiddy, le 13 mar 2009 à 13:42:10

A priori, tu as dû créer un projet Win32, et tu n'as pas mis d'entrée WinMain d'où le message d'erreur.
Donc soit, tu recrées un type de projet console, soit tu dois mettre WinMain au lieu de main. Voici son prototype : int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);
Cdlt
Google is your friend

Répondre à fiddy

12

Div, le 13 mar 2009 à 14:50:06

Jai fait mon projet sous eclipse+CDT et je vois pas où choisir console ou windows...jai installé dev C++ car je sais qu'on peut choisir facilement en créant un projet, jai donc choisi console, mais jai les undefined reference qui reviennent

Répondre à Div

13

Div, le 13 mar 2009 à 14:55:53

G++ -L./ -lh1
me retourne toujours l'erreur du WinMain, avec pourtant un projet créé en mode console

Répondre à Div

14

fiddy, le 13 mar 2009 à 15:16:06

Juste pour vérifier, remplace int main(...) par int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
Et recompile avec g++ -L.\ -lh1
Google is your friend

Répondre à fiddy

15

Div, le 13 mar 2009 à 15:23:51

Toujours le problème WinMain...

Répondre à Div

16

fiddy, le 13 mar 2009 à 16:18:11

Peux-tu poster ton fichier test.cpp ?
Google is your friend

Répondre à fiddy

17

 Div, le 13 mar 2009 à 16:20:26

Je suis désolé fiddy mais je ne peux pas. Je reprend un projet qui m'interdit de diffuser le code; en revanche si vous avez des demandes plus précises sur le code je pourrai toujours vérifier ou poster un bout de code.

Merci de votre aide.

Répondre à Div