[C/C++] Probleme de link sous VC6

Probleme de link sous VC6 [C/C++] - C - Programmation

Marsh Posté le 01-04-2004 à 16:50:33    

Dans un projet sous Visual C++ 6, j'ai un mélange de programme en C et en C++ (suite a un portage rapide d'une version UNIX en version Windows).  
 
En compilant en mode DEBUG, pas de probleme.  
Mais en compilant en mode RELEASE, j'ai ces erreurs la...
 
Linking...
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBC.lib(delete.obj)
nafxcw.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcw.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Release/producer.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
 
J'ai regardé dans MSDN... mais j'avoue que je ne sais pas trop quoi en penser et surtout comme résoudre...
Si quelqu'un a eu ces problemes... je suis preneur de solutions ou de bons conseils.  
 
MErci a tous
 

Reply

Marsh Posté le 01-04-2004 à 16:50:33   

Reply

Marsh Posté le 02-04-2004 à 08:11:08    

Personne n'a connu ce genre de pb..?  
Tant pis pour moi alors... :'(

Reply

Marsh Posté le 02-04-2004 à 08:43:00    

Es-tu sûr d'avoir choisis Multi-thread dans ton projet en release ?

Reply

Marsh Posté le 02-04-2004 à 12:13:20    

vi....
En changeant quelques options... J'obtiens maintenant ce message d'erreur la...
Generating Code...
Linking...
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMT.lib(delete.obj)
Release/producer.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.


Message édité par ben33 le 02-04-2004 à 12:21:32
Reply

Marsh Posté le 02-04-2004 à 13:38:19    

vi ... donc tu n'étais pas en multithread ;)
et cette nafxcw.lib c'est nécessaire ?
sinon tu as une option de linkage pour autoriser les doubles définitions :
/FORCE:MULTIPLE

Reply

Marsh Posté le 02-04-2004 à 13:52:17    

J'ai lu ca dans la doc...
Mais comme je ne maitrise pas encore bien VC++6... ;)
Ca se met ou.....?

Reply

Marsh Posté le 02-04-2004 à 14:30:18    

Dans les propriétés du projet, onglet Link, et là tu écrit ça à la suite des .lib dans "Objects\Library modules :"

Reply

Marsh Posté le 02-04-2004 à 14:31:18    

Maintenant ce n'est pas très propre tout de même ...
J'ai dû m'en servir une fois sur un projet que j'ai récupéré et que je voulais compiler, mais bon ..

Reply

Marsh Posté le 02-04-2004 à 14:34:03    

C'est clair que ce n'est pas tres propre.. De toute facon, le projet n'est pas propre du tout puisqu'il mélange du C et du C++...
.
Mais j'aimerais bien compiler en release au moins une fois le projet que j'ai récupéré au boulot...
 
Maintenant, une fois mis ton option, j'ai cette erreur la... Typique apparemment.. mais je ne sais pas ocmment m'en débarasser...
 
Si t as une idée...
 
c:\AnimaSrc\sqldrv.c(5) : error C2099: initializer is not a constant
 
provenant de cette ligne : static FILE *errout=stdout;
 
Merci!

Reply

Marsh Posté le 02-04-2004 à 15:13:16    

bizarre, ça devrait passer ça, stdout est normalement aussi un FILE *
Me sent incompetent là ...
 

Reply

Marsh Posté le 02-04-2004 à 15:13:16   

Reply

Marsh Posté le 02-04-2004 à 15:36:01    

J'ai peur que ce soit une merde... du genre mélange en C et C++...
Et vu que le prog qui plante est un prog C.. selon la doc on n'a pas le droit..
Bref...  

Reply

Marsh Posté le 02-04-2004 à 15:44:10    

Pas le droit ?
Pour moi on a le droit de mélanger.
T'as regardé tout de même si stdout n'était pas redefini avec un autre type au cas où ?

Reply

Marsh Posté le 02-04-2004 à 16:12:14    

Je voulais dire que ce type d'erreur était typique.. puisqu'on n'a pas le droit de faire ce genre de chose en C (doc de VC++ a propos du code d'erreur..)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed