Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 1


|
Conversation (Résolue) : Probleme de compilation |
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour a tous,
je suis un peu largué la.
J'ai plein de fichier .c et .h qui m'ont été générés par un décodeur online (donc pas de problème a priori dans ces fichiers).
J'essaye de créer un exécutable de ces 400 fichiers, ce qui est leur destinée. Je les compile, et la le compilateur me dit:
[Linker error] undefined reference to '..........' [Linker error] undefined reference to '..........' [Linker error] undefined reference to '..........' [Linker error] undefined reference to '..........' more undefined reference to'.........' follow ld returned 1 exit status
Et je dois dire que pour moi c'est du chinois. Est ce que je dois rajouter des options de compilation? est ce qu'il me manque des fichiers?
Je bosse sous DevCpp et Windows...
Ce serait sympa si vous pouviez me filer un petit coup de main.
Dernière modification par maspero (01-06-2009 09:01:56)
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
Apparemment, il manque une ou plusieurs libs dans les options du linker. Il faudrait qu'on sache ce qui se trouve à la place des points de suspension pour pouvoir te dire lesquelles.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
salut xav, merci pour ta reponse rapide et dsl pour la mienne un peu lente.
Alors ce sont des libs specifiques a mon prog, je suis pas sur que ca parle.
J'ai mis mes fichiers en ligne, le main s'apelle converter-sample.c!!! Et je suis sense faire un exe de ces fichiers..
url : http:/dl.free.fr/pHto5SHA0 Apres 1 semaine de galere.. Ca ne marche pas. Si qq a le temps de jeter un ptit coup d'oeil ce serait super.
Merci d'avance!
|
|
Gandi (Gourou de la secte)
Lieu: Clermont-Ferrand
Inscrit le : 10-10-2007
Messages: 222
Snippets: 5
Tutoriels: 0
Site web
Hors ligne |
to '..........' Esque tu peux mettres les blabla écrit à la place des ....... car en faite c'est le nom des fonctions qu'il essait de chercher. Quel compilo utilises tu ? (je connais pas DevCpp mais si le compilo c'est Gcc il te faut des libraires avec l'extension .a et si c'est le compilo de Visual il te faut des .lib (je sais pas pour les autres compilos telques burland ).
Dernière modification par Gandi (09-06-2009 18:06:42)
|
"Les ordinateurs ne remplaceront jamais les livres. Vous ne pouvez pas vous mettre sur une pile de disquettes pour atteindre le haut de votre armoire" ( Sam Ewing )
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
salut,
j'utilise codeblocks maintenant, et mingw32 (gnu gcc).
Je n'ai plus les memes erreurs maintenant.
Voila ce que le compilateur me renvoi:
C:\Documents and Settings\pier\Desktop\cb.cvter\files\BIT_STRING.c|19|error: `ASN_OSUBV_BIT' undeclared here (not in a function)| C:\Documents and Settings\pier\Desktop\cb.cvter\files\BIT_STRING.c|19|error: initializer element is not constant| C:\Documents and Settings\pier\Desktop\cb.cvter\files\BIT_STRING.c|19|error: (near initialization for `asn_DEF_BIT_STRING_specs.subvariant')| ||=== Build finished: 3 errors, 0 warnings == et voici donc l'endroit ou se trouve l'erreur
Code cpp:/*- * Copyright (c) 2003, 2004 Lev Walkin <vlm@lionet.info>. All rights reserved. * Redistribution and modifications are permitted subject to BSD license. */ #include <asn_internal.h> #include <BIT_STRING.h> #include <asn_internal.h> /* * BIT STRING basic type description. */ static ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) }; static asn_OCTET_STRING_specifics_t asn_DEF_BIT_STRING_specs = { sizeof(BIT_STRING_t), offsetof(BIT_STRING_t, _asn_ctx), ASN_OSUBV_BIT ////<================================================================ ICI ! }; asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { "BIT STRING", "BIT_STRING", OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ BIT_STRING_print, BIT_STRING_constraint, OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ OCTET_STRING_decode_xer_binary, BIT_STRING_encode_xer, OCTET_STRING_decode_uper, /* Unaligned PER decoder */ OCTET_STRING_encode_uper, /* Unaligned PER encoder */ 0, /* Use generic outmost tag fetcher */ asn_DEF_BIT_STRING_tags, sizeof(asn_DEF_BIT_STRING_tags) / sizeof(asn_DEF_BIT_STRING_tags[0]), asn_DEF_BIT_STRING_tags, /* Same as above */ sizeof(asn_DEF_BIT_STRING_tags) / sizeof(asn_DEF_BIT_STRING_tags[0]), 0, /* No PER visible constraints */ 0, 0, /* No members */ &asn_DEF_BIT_STRING_specs };
Je ne pense pas qu'il y ai d'erreurs dans le code, mais j'ai l'impression que le compilateur n'a pas toutes les donnees necessaires...
Une idee? ---------- la déclaration de ASN_OSUBV_BIT se fait dans un header :
Code Cpp:/*- * Copyright (c) 2003 Lev Walkin <vlm@lionet.info>. All rights reserved. * Redistribution and modifications are permitted subject to BSD license. */ #ifndef _OCTET_STRING_H_ #define _OCTET_STRING_H_ #include <asn_application.h> #ifdef __cplusplus extern "C" { #endif typedef struct OCTET_STRING { uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ int size; /* Size of the buffer */ asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ } OCTET_STRING_t; extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; asn_struct_free_f OCTET_STRING_free; asn_struct_print_f OCTET_STRING_print; asn_struct_print_f OCTET_STRING_print_utf8; ber_type_decoder_f OCTET_STRING_decode_ber; der_type_encoder_f OCTET_STRING_encode_der; xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ xer_type_encoder_f OCTET_STRING_encode_xer; xer_type_encoder_f OCTET_STRING_encode_xer_utf8; per_type_decoder_f OCTET_STRING_decode_uper; per_type_encoder_f OCTET_STRING_encode_uper; /****************************** * Handy conversion routines. * ******************************/ /* * This function clears the previous value of the OCTET STRING (if any) * and then allocates a new memory with the specified content (str/size). * If size = -1, the size of the original string will be determined * using strlen(str). * If str equals to NULL, the function will silently clear the * current contents of the OCTET STRING. * Returns 0 if it was possible to perform operation, -1 otherwise. */ int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); /* Handy conversion from the C string into the OCTET STRING. */ #define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) /* * Allocate and fill the new OCTET STRING and return a pointer to the newly * allocated object. NULL is permitted in str: the function will just allocate * empty OCTET STRING. */ OCTET_STRING_t *OCTET_STRING_new_fromBuf(asn_TYPE_descriptor_t *td, const char *str, int size); /**************************** * Internally useful stuff. * ****************************/ typedef struct asn_OCTET_STRING_specifics_s { /* * Target structure description. */ int struct_size; /* Size of the structure */ int ctx_offset; /* Offset of the asn_struct_ctx_t member */ enum asn_OS_Subvariant { ASN_OSUBV_ANY, /* The open type (ANY) */ ASN_OSUBV_BIT, /* BIT STRING */ //<================================================ LA ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ ASN_OSUBV_U16, /* 16-bit character (BMPString) */ ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ } subvariant; } asn_OCTET_STRING_specifics_t; #ifdef __cplusplus } #endif #endif /* _OCTET_STRING_H_ */
Dernière modification par maspero (11-06-2009 08:57:23)
|
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
up!!
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut. J'ai testé la compilation des fichiers dont tu as donné le lien, mais apparemment, tu utilises des libs spécifiques. J'ai une erreur correspondant à un header manquant : sysexits.h
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
Voici SYSEXITS.h dsl et merci de me donner un peu de ton temps xav
#ifndef _SYSEXITS_H #define _SYSEXITS_H 1
#define EX_OK 0
#define EX__BASE 64
#define EX_USAGE 64 #define EX_DATAERR 65 #define EX_NOINPUT 66 #define EX_NOUSER 67 #define EX_NOHOST 68 #define EX_UNAVAILABLE 69 #define EX_SOFTWARE 70 #define EX_OSERR 71 #define EX_OSFILE 72 #define EX_CANTCREAT 73 #define EX_IOERR 74 #define EX_TEMPFAIL 75 #define EX_PROTOCOL 76 #define EX_NOPERM 77 #define EX_CONFIG 78
#define EX__MAX 78
#endif
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Ça marche mieux comme ça.
Il faut que tu ajoutes le sous-dossier TAP3.11_MM_ASN1.SPEC.asn1-2 aux chemins de recherche du compilateur, afin qu'il puisse aller chercher le header BIT_STRING.h.
Par contre, ensuite, j'ai quelques erreurs de link :
Code:obj\rel\GeneralizedTime.o:GeneralizedTime.c:(.text+0x4d)||undefined reference to `setenv'| obj\rel\GeneralizedTime.o:GeneralizedTime.c:(.text+0x79)||undefined reference to `setenv'| obj\rel\GeneralizedTime.o:GeneralizedTime.c:(.text+0xc8)||undefined reference to `unsetenv'| obj\rel\TAP3.11_MM_ASN1.SPEC.asn1-2\converter-sample.o:converter-sample.c:(.data+0x0)||undefined reference to `asn_DEF_PDU'| obj\rel\constr_SET.o:constr_SET.c:(.text+0x97)||undefined reference to `ntohl@4'| obj\rel\converter-sample.o:converter-sample.c:(.data+0x0)||undefined reference to `asn_DEF_PDU'|
Et après quelques brèves recherches, il semblerait que les fonctions setenv et unsetenv ne soient pas disponibles sous MinGW.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
ok pour le dossier je le rajoute!
Tu veux dire que certains compilateur ne fonctionne pas comme d'autre... J'apprend un truc la! 
En gros ca veut dire qu'il faut que je compile avec un autre? Sinon je ne pourrais jamais compiler ? Peut etre celui de Visual Studio? Lequel me conseilles tu?
Merci beaucoup Xav d'avoir essayé, c'est vraiment tres sympa en tout cas.
Je résume : je mets le dossier TAPmachin dans les dossiers includes de codeblocks et ensuite je dois installer un autre compilateur? Et apres ca marchera ? J'essaye des demain au taf...
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
maspero:Tu veux dire que certains compilateur ne fonctionne pas comme d'autre... J'apprend un truc la!  Ce n'est pas une question de fonctionnement (même si deux compilateurs différents ne pondront pas le même exécutable, ce qui est entre autres une question d'optimisation). Mais MinGW ne possède pas toutes les libs que l'on peut trouver avec Visual C++. Par exemple, la lib Gdi+ n'est pas disponible avec MinGW sans une petite "bricole".
Et ça ne veut pas dire non plus que les fonctions setenv() et getenv() seront disponibles avec Visual C++.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
Alors.....
J'ai essaye avec le compilateur de VC6 (mon boss me dit que ca a deja marche avec... donc j'essaye)
et j'ai.... DES ERREURS (
1143 constr_sequence.c [Warning C4013] 'uper_get_nslength' undefined; assuming extern returning int 1407 constr_sequence.c [Warning C4013] 'uper_put_nslength' undefined; assuming extern returning int
109 nativeinteger.c [Error C2039] 'field_unsigned' : is not a member of 'asn_INTEGER_specifics_s 27 nativeinteger.c see declaration of asn_INTEGER_specifics_s
110 nativeinteger.c [Warning C4013] 'asn_INTEGER2ulong' undefined; assuming extern returning int
189 nativeinteger.c [Error C2039] 'field_unsigned' : is not a member of 'asn_INTEGER_specifics_s' 27 integer.h see declaration of asn_INTEGER_specifics_s Je comprend vraiment pas !! Comment se fait il qu'on ai pas les memes choses? -----------------------------------------------------------------------------------
Dernière modification par maspero (18-06-2009 15:09:28)
|
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
---------- bon maintenant ca compile mais ca ne linke pas a cause de certaines librairies que mon linker n'a pas... mais ce ne sont pas celle que tu disais il s'agit de librairie spécifique ASN.
Je dois donc lui ajouter mais je n'ai pas de .a ou de .lib... par contre j'ai un makefile qui a été généré automatiquement avec les .c et .h il se presente comme ca:
ASN_MODULE_SOURCES= \ tous les .c ASN_MODULE_HEADERS= \ tous les .h
ASN_MODULE_HEADERS+=INTEGER.h ASN_MODULE_HEADERS+=NativeEnumerated.h ASN_MODULE_SOURCES+=INTEGER.c ASN_MODULE_SOURCES+=NativeEnumerated.c ASN_MODULE_HEADERS+=NativeInteger.h ASN_MODULE_SOURCES+=NativeInteger.c ASN_MODULE_HEADERS+=asn_SEQUENCE_OF.h ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.c ASN_MODULE_HEADERS+=asn_SET_OF.h ASN_MODULE_SOURCES+=asn_SET_OF.c ASN_MODULE_HEADERS+=constr_CHOICE.h ASN_MODULE_SOURCES+=constr_CHOICE.c ASN_MODULE_HEADERS+=constr_SEQUENCE.h ASN_MODULE_SOURCES+=constr_SEQUENCE.c ASN_MODULE_HEADERS+=constr_SEQUENCE_OF.h ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.c ASN_MODULE_HEADERS+=constr_SET_OF.h ASN_MODULE_SOURCES+=constr_SET_OF.c ASN_MODULE_HEADERS+=asn_application.h ASN_MODULE_HEADERS+=asn_system.h ASN_MODULE_HEADERS+=asn_codecs.h ASN_MODULE_HEADERS+=asn_internal.h ASN_MODULE_HEADERS+=OCTET_STRING.h ASN_MODULE_SOURCES+=OCTET_STRING.c ASN_MODULE_HEADERS+=BIT_STRING.h ASN_MODULE_SOURCES+=BIT_STRING.c ASN_MODULE_SOURCES+=asn_codecs_prim.c ASN_MODULE_HEADERS+=asn_codecs_prim.h ASN_MODULE_HEADERS+=ber_tlv_length.h ASN_MODULE_SOURCES+=ber_tlv_length.c ASN_MODULE_HEADERS+=ber_tlv_tag.h ASN_MODULE_SOURCES+=ber_tlv_tag.c ASN_MODULE_HEADERS+=ber_decoder.h ASN_MODULE_SOURCES+=ber_decoder.c ASN_MODULE_HEADERS+=der_encoder.h ASN_MODULE_SOURCES+=der_encoder.c ASN_MODULE_HEADERS+=constr_TYPE.h ASN_MODULE_SOURCES+=constr_TYPE.c ASN_MODULE_HEADERS+=constraints.h ASN_MODULE_SOURCES+=constraints.c ASN_MODULE_HEADERS+=xer_support.h ASN_MODULE_SOURCES+=xer_support.c ASN_MODULE_HEADERS+=xer_decoder.h ASN_MODULE_SOURCES+=xer_decoder.c ASN_MODULE_HEADERS+=xer_encoder.h ASN_MODULE_SOURCES+=xer_encoder.c ASN_MODULE_HEADERS+=per_support.h ASN_MODULE_SOURCES+=per_support.c ASN_MODULE_HEADERS+=per_decoder.h ASN_MODULE_SOURCES+=per_decoder.c ASN_MODULE_HEADERS+=per_encoder.h ASN_MODULE_SOURCES+=per_encoder.c ASN_MODULE_HEADERS+=per_opentype.h ASN_MODULE_SOURCES+=per_opentype.c ASN_CONVERTER_SOURCES+=converter-sample.c
lib_LTLIBRARIES=libsomething.la libsomething_la_SOURCES=$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS)
# This file may be used as an input for make(3) # Remove the lines below to convert it into a pure .am file TARGET = progname CFLAGS += -I. OBJS=${ASN_MODULE_SOURCES:.c=.o} ${ASN_CONVERTER_SOURCES:.c=.o}
all: $(TARGET)
$(TARGET): ${OBJS} $(CC) $(CFLAGS) -o $(TARGET) ${OBJS} $(LDFLAGS) $(LIBS)
.SUFFIXES: .SUFFIXES: .c .o
.c.o: $(CC) $(CFLAGS) -o $@ -c $<
clean: rm -f $(TARGET) rm -f $(OBJS)
regen: regenerate-from-asn1-source
regenerate-from-asn1-source: asn1c -S/skeletons -fnative-types TAP3.4_ASN1.spec.asn1 Quand j'essaye de l'importer dans codeblocks il me dit :
Execution of 'make.exe -f C:\Documents and Settings\Pierrot\Bureau\TAP3.4\converter\Makefile.am.sample cleanDebug' in 'C:\Documents and Settings\Pierrot\Bureau\TAP3.4\converter' failed. Nothing to be done. ---------- Up je ne sais plus quoi faire!!!!

Un petit coup de main serait pas de refus...
Dernière modification par maspero (19-06-2009 17:53:13)
|
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
AAAAhhh que j'aime la compilation!!!!
Résumé des épisodes précédents : pb de compilation avec gcc car certaines fonctions utilisées ne sont pas compatible avec le compilo.
Et maintenant, j'essaye avec le compilo de VC++ et merveille des merveilles, les fichiers utilisent unistd.h qui est une librairie utilisé par gcc uniquement et donc pas par VC++.
Je dois dire que c'est assez énervant!
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
Regardes s'il n'y a pas une condition#ifdef à l'inclusion du fichier unistd.h. C'est peut-être une constante qu'il faut que tu définisse pour que ça puisse compiler.
Parce que unistd.h est un header qui définit des constantes pour Unix. En voici le contenu.
Et comme par hasard, les fonctions indisponibles avec MinGW (getenv, setenv) sont des fonctions Unix/Linux 
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
AAAAh enfin j'ai trouvé.
il s'agit en fait d'une définition de macro qui manquait..... Il suffisait en fait de rajouter comme option :
-DPDU=DataInterChange au compilateur
Merci Xaviou j'ai trouvé...
|
|
|