wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 2

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Probleme de compilation
Conversation (Résolue) : Probleme de compilation
01-06-2009 08:48:30  Probleme de compilation #1
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)

02-06-2009 08:09:29  Re: Probleme de compilation #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
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à...
09-06-2009 12:44:25  Re: Probleme de compilation #3
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!
09-06-2009 17:07:38  Re: Probleme de compilation #4
Gandi (Gourou de la secte)
Lieu: Clermont-Ferrand
Inscrit le : 10-10-2007
Messages: 214
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 )
11-06-2009 08:49:33  Re: Probleme de compilation #5
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)

12-06-2009 15:08:54  Re: Probleme de compilation #6
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
up!!
12-06-2009 16:15:55  Re: Probleme de compilation #7
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
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à...
15-06-2009 12:47:28  Re: Probleme de compilation #8
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
15-06-2009 14:13:33  Re: Probleme de compilation #9
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
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à...
16-06-2009 14:00:36  Re: Probleme de compilation #10
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...
16-06-2009 17:24:26  Re: Probleme de compilation #11
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
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à...
17-06-2009 09:10:27  Re: Probleme de compilation #12
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)

18-06-2009 15:09:44  Re: Probleme de compilation #13
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)

23-06-2009 09:46:50  Re: Probleme de compilation #14
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! :)
23-06-2009 11:43:07  Re: Probleme de compilation #15
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
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à...
23-06-2009 12:31:26  Re: Probleme de compilation #16
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é...
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Probleme de compilation