|VC++] error LNK2001: unresolved external symbol - C++ - Programmation
Marsh Posté le 27-03-2003 à 17:19:36
Le MSDN est dispo en ligne : http://msdn.microsoft.com
Apparemment, tu as besoin du SDK de DirectX, sur le site de Crosoft aussi.
Pour info, le topic pour résoudre les LNK2001
http://forum.hardware.fr/forum2.php3?post=19176&cat=10
Marsh Posté le 27-03-2003 à 17:35:00
Cezium a écrit : LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library |
Tu dois utiliser d'autres libs qui ont été liées avec une autre version de la bibliothèque CRT (C RunTime Library). Vérifie que tu choisis bien les mêmes options dans "Project"->"Settings"->"C++"->"Code generation"->"Use runtime library" pour ton application et pour les librairies dont elle dépend. Si par exemple tu as une librairie qui utilise la version "Single threaded" et que ton application utilise la version "MultiThreaded", tu auras ce message.
Cezium a écrit : visu.obj : error LNK2001: unresolved external symbol _Sleep |
Ces erreurs doivent pouvoir se résoudre en téléchargeant le dernier SDK DirectX et en ajoutant les ".lib" correspondant à ton projet ("Project"->"Settings"->"Link"->"Object/Library Modules" ). Pour savoir quels sont les ".lib", consulte la MSDN (par exemple "timeGetTime" nécessite "winmm.lib" ).
Marsh Posté le 27-03-2003 à 18:07:06
ou alors tu passes par la mnière violente :
options de link : /nodefaultlib:libc.lib
et tu ajoutes la lib : libcmt.lib dans la liste des libs aue tu linkes ...
Bon courage !
Marsh Posté le 27-03-2003 à 18:24:20
merci pour vos infos
j'suis en train de dl la sdk de dx9
222 Mo !!!
Marsh Posté le 27-03-2003 à 21:00:02
bon ba g dl la sdk, ca va mieux
mais g encore kelke erreur
--------------------Configuration: visu_voisin - Win32 Debug--------------------
Linking...
LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library
visu.obj : error LNK2001: unresolved external symbol _Sleep
mlib_debug.lib(main.obj) : error LNK2001: unresolved external symbol _Main
Debug/visu_voisin.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
Creating browse info file...
visu_voisin.exe - 3 error(s), 1 warning(s)
g bien essayé de changer dans
"Project"->"Settings"->"C++"->"Code generation"->"Use runtime library"
mais ca me fé toujours la meme chose
et y'a aussi la fonction sleep qui est pas défini, ca doit etre une fonction concernant les thread mais g pas trouvé a kelle librairie elle se rapportait
vous avez une idée ?
Marsh Posté le 27-03-2003 à 21:04:08
theShOcKwAvE a écrit : ou alors tu passes par la mnière violente : |
ca marche avec ca
mais il me reste encore kelke erreur
--------------------Configuration: visu_voisin - Win32 Debug--------------------
Linking...
visu.obj : error LNK2001: unresolved external symbol _Sleep
mlib_debug.lib(main.obj) : error LNK2001: unresolved external symbol _Main
Debug/visu_voisin.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
visu_voisin.exe - 3 error(s), 0 warning(s)
si kelk1 a une idée
Marsh Posté le 27-03-2003 à 21:44:53
humm
j'précise que ce prog tourne en principe sous linux (c un TP )
et g un pote qui m'a dit que la fonction sleep serait une fonction system de linux donc que sous windows ca fonctionne
c'est vrai ca ?
Marsh Posté le 27-03-2003 à 22:52:33
|
Marsh Posté le 28-03-2003 à 00:05:26
merci, ca marche
g donc ajouter le include pour winbase.h
par contre la que des erreur dans le .h
c:\program files\microsoft visual studio\vc98\include\winbase.h(216) : error C2061: syntax error : identifier 'DWORD'
c:\program files\microsoft visual studio\vc98\include\winbase.h(217) : error C2061: syntax error : identifier 'InternalHigh'
c:\program files\microsoft visual studio\vc98\include\winbase.h(217) : error C2059: syntax error : ';'
c:\program files\microsoft visual studio\vc98\include\winbase.h(218) : error C2061: syntax error : identifier 'Offset'
c:\program files\microsoft visual studio\vc98\include\winbase.h(218) : error C2059: syntax error : ';'
c:\program files\microsoft visual studio\vc98\include\winbase.h(219) : error C2061: syntax error : identifier 'OffsetHigh'
c:\program files\microsoft visual studio\vc98\include\winbase.h(219) : error C2059: syntax error : ';'
c:\program files\microsoft visual studio\vc98\include\winbase.h(220) : error C2061: syntax error : identifier 'hEvent'
c:\program files\microsoft visual studio\vc98\include\winbase.h(220) : error C2059: syntax error : ';'
c:\program files\microsoft visual studio\vc98\include\winbase.h(221) : error C2059: syntax error : '}'
c:\program files\microsoft visual studio\vc98\include\winbase.h(224) : error C2061: syntax error : identifier 'DWORD'
c:\program files\microsoft visual studio\vc98\include\winbase.h(225) : error C2061: syntax error : identifier 'lpSecurityDescriptor'
c:\program files\microsoft visual studio\vc98\include\winbase.h(225) : error C2059: syntax error : ';'
c:\program files\microsoft visual studio\vc98\include\winbase.h(227) : error C2059: syntax error : '}'
c:\program files\microsoft visual studio\vc98\include\winbase.h(230) : error C2061: syntax error : identifier 'HANDLE'
c:\program files\microsoft visual studio\vc98\include\winbase.h(231) : error C2061: syntax error : identifier 'hThread'
c:\program files\microsoft visual studio\vc98\include\winbase.h(231) : error C2059: syntax error : ';'
c:\program files\microsoft visual studio\vc98\include\winbase.h(232) : error C2061: syntax error : identifier 'dwProcessId'
c:\program files\microsoft visual studio\vc98\include\winbase.h(232) : error C2059: syntax error : ';'
c:\program files\microsoft visual studio\vc98\include\winbase.h(233) : error C2061: syntax error : identifier 'dwThreadId'
c:\program files\microsoft visual studio\vc98\include\winbase.h(233) : error C2059: syntax error : ';'
c:\program files\microsoft visual studio\vc98\include\winbase.h(234) : error C2059: syntax error : '}'
c:\program files\microsoft visual studio\vc98\include\winbase.h(241) : error C2061: syntax error : identifier 'DWORD'
g oublié de faire kelkechose ?
Marsh Posté le 28-03-2003 à 00:10:35
hum ....
tu veux faire du DirectX dans un TP Linux ? C'est mal barré, nan ?
Marsh Posté le 28-03-2003 à 00:11:56
non pas du tout
mais le tp fé appel a la librairie mlib
et pour faire fonctionner cette librairie sous windows, il faut avoir le sdk DirectX
Marsh Posté le 28-03-2003 à 00:23:05
tout compte
au lieu d'ajouter le include sur winbase.h, je l'ai fé sur windows.h
il me reste pu qu'une erreur
ca devient bon
--------------------Configuration: visu_voisin - Win32 Debug--------------------
Linking...
mlib_debug.lib(main.obj) : error LNK2001: unresolved external symbol _Main
Debug/visu_voisin.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
visu_voisin.exe - 2 error(s), 0 warning(s)
par contre cette erreur, je vois pas du tout d'où elle pe venir
Marsh Posté le 28-03-2003 à 00:37:29
Bon, ça veut dire que dans ta librairie mlib_debug.lib, tu as le fichier main.obj (sûrement le fichier main.c à l'origine), qui utilise une fonction Main (définie dans main.h).
Je ne connais pas très bien Mlib, mais apparemment il ne faut pas créer de WinMain (il est défini par la librairie dans main.c), mais implémenter la fonction Main qui est appelée par la librairie.
Le mieux est encore que tu regardes le fichier main.c de MLib, ce sera sûrement plus clair.
Marsh Posté le 28-03-2003 à 00:57:11
/**
This function is the entry point of your application. It's like the standard
C function main() but main() is already implemented by mlib and call Main()
after mlib initialisation. Put your code in this function.
*/
void Main(void);
en effet, la fonction est déja définie dans le mlib.h
mais il dise de mettre le code dans cette fonction, j'pige pas trop
Marsh Posté le 28-03-2003 à 01:52:41
En fait, si tu as une fonction main: int main(int argc, char* argv[]) ou WinMain: int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ), il faut que tu la remplace par une fonction Main: void Main(void). C'est cette fonction qui va servir de point d'entrée pour ton programme.
edit: correction de tags
Marsh Posté le 28-03-2003 à 08:20:54
merci pour votre aide a tous
ca fonctionne
pour la main
suffisait de creer une fonction
void Main(void){
main(1,1);
}
et voila
encore merci
Marsh Posté le 27-03-2003 à 17:14:53
salut a tous
g déja parcouru le forum
et g vu que ce problème était résolu en ajoutant des librairies
le problème c que je n'ai pas la MSDN d'installé donc je ne sais pas a kelle librairie correspondent les fonctions
voila le log
Linking...
LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library
visu.obj : error LNK2001: unresolved external symbol _Sleep
mlib_debug.lib(videoddraw.obj) : error LNK2001: unresolved external symbol _IID_IDirectDraw4
mlib_debug.lib(videoddraw.obj) : error LNK2001: unresolved external symbol _DirectDrawCreate@12
mlib_debug.lib(videoddraw.obj) : error LNK2001: unresolved external symbol _DirectDrawEnumerateExA@12
mlib_debug.lib(getdxver.obj) : error LNK2001: unresolved external symbol _IID_IDirectDrawSurface4
mlib_debug.lib(getdxver.obj) : error LNK2001: unresolved external symbol _IID_IDirectDrawSurface3
mlib_debug.lib(getdxver.obj) : error LNK2001: unresolved external symbol _IID_IDirectDraw2
mlib_debug.lib(timerwin.obj) : error LNK2001: unresolved external symbol __imp__timeGetTime@0
mlib_debug.lib(main.obj) : error LNK2001: unresolved external symbol _Main
Debug/visu_voisin.exe : fatal error LNK1120: 9 unresolved externals
Error executing link.exe.
voila si kelk1 pouvait me donner les librairies a ajouter
merci d'avance