Avatar billede soreno Praktikant
29. april 2002 - 18:19 Der er 21 kommentarer og
1 løsning

linker fejl

jeg bruger vc++ 6 std. og får følg. fejl:

scrnsave.lib(scrnsave.obj) : error LNK2001: unresolved external symbol __imp__InitCommonControlsEx@4
scrnsave.lib(scrnsave.obj) : error LNK2001: unresolved external symbol __SEH_epilog
scrnsave.lib(scrnsave.obj) : error LNK2001: unresolved external symbol __SEH_prolog
snow.scr : fatal error LNK1120: 3 unresolved externals

Det er et ældre projekt, som har virket. Hvilket lib skal der linkes med, eller hvad kan jeg gøre ?
Avatar billede disky Nybegynder
29. april 2002 - 18:21 #1
i din scrnsave.c fil bruger du 3 metoder som linkeren ikke kan finde.

Du skal finde ud af hvilke .lib fil(er) de er i, eller rekompile de .c filer de er i.
Avatar billede soreno Praktikant
29. april 2002 - 18:35 #2
scrnsave.h er en del af vc++, og implementeringen af denne ligger i lib filen, derfor kan jeg ikke lige umiddelbart se hvordan den er skruet sammen :=)
Avatar billede disky Nybegynder
29. april 2002 - 18:39 #3
det er ikke scrnsave der er problemmet, men implementationen af metoder den kalder !
Avatar billede soreno Praktikant
29. april 2002 - 18:47 #4
kan det være fordi at jeg har installeret platform sdk, siden jeg sidst kompilerede - i så fald vil jeg vente med at lukke spørgsmålet til jeg har geninstalleret (og testet om det er det), eller der er kommet flere besvarelser.
Avatar billede soreno Praktikant
29. april 2002 - 19:01 #5
ok, jeg prøvede lige at fjerne platform sdk, men det hjalp ikke.

disky> mener du metoder som jeg har lavet, eller noget af microsoft's kode ?
Avatar billede soreno Praktikant
29. april 2002 - 19:33 #6
jeg har lige prøvet et andet (screensaver) projekt, og der er samme fejl. mon det er winxp, eller vc++ der driller ?
Avatar billede tson Nybegynder
29. april 2002 - 23:25 #7
SEH er en forkortelse for Structured Exception Handling. Prøv evt. at ændre exception handling settings for dit projekt. Det kan også være at du mangler at linke med sehprolg.obj
Avatar billede killer_bee Nybegynder
30. april 2002 - 12:42 #8
soreno >> i VC++ under menuen  Project->Settings på faneblsdet som hedder 'Link' der hvor der står 'Object/Library modules:' skriv navnet på det lib du mangler (eks. dinlib.lib)
Avatar billede soreno Praktikant
30. april 2002 - 16:15 #9
killer_bee> jeg har ikke ændret noget i projektet siden sidst jeg kompilerede (ca. 2-3 md siden), så derfor kan jeg ikke lige se hvilke libs det er den mangler.. - hvis den da overhovedet mangler nogle (har en ide om at fejlen er winxp og/eller vc++ - jeg havde nemlig ikke winxp da jeg prøvede sidst)

tson> har prøvet at slå exception handling fra, det virkede ikke (stadig samme fejl). Fejlen tror jeg sker fordi jeg har included <scrnsave.h>, jeg får nemlig kun fejl i mine screensaver projekter som er baseret på <scrnsave.h>,  men hvorfor den brokker sig kan jeg ikke gennemskue.
Avatar billede killer_bee Nybegynder
30. april 2002 - 16:18 #10
soreno har du prøvet det jeg skrev .. eller afviser du det bare???
Hvis du har reinstallet noget kan det mon ikke har ændret f.eks. paths ?
Avatar billede killer_bee Nybegynder
30. april 2002 - 16:21 #11
InitCommonControlsEx er en funktion som du kalder .. du må da vide hvor du kalder den fra.. det er sikker det lib du 'mangler'.
Avatar billede soreno Praktikant
30. april 2002 - 16:33 #12
jeg har prøvet, men uden held - jeg aner jo ikke hvilket lib som mangler, det har jo virket.
den eneste headerfil i standardudgaven som indeholder "InitCommonControlsEx" er "Commctrl.h", så jeg prøvede lige at linke med Comctl32.lib, den rettede en af fejlene, så nu er fejlene:
scrnsave.lib(scrnsave.obj) : error LNK2001: unresolved external symbol __SEH_epilog
scrnsave.lib(scrnsave.obj) : error LNK2001: unresolved external symbol __SEH_prolog
Avatar billede killer_bee Nybegynder
30. april 2002 - 16:36 #13
hva med scrnsave.lib? Mon ik den også skal med?
Avatar billede killer_bee Nybegynder
30. april 2002 - 16:39 #14
Prøv at find de lib's hvor SEH_epilog og SEH_prolog er.. så kører det sikkert
Avatar billede soreno Praktikant
30. april 2002 - 17:08 #15
ok, fremgangsmåden var søg i lib dir'et efter SEH_epilog og så linke med sehprolg.obj, men hvorfor jeg pludselig skal gøre det forstår jeg ikke ??

hovedsagen er at det virker (borset fra at det ene projekt laver mem ref. fejl :(
Avatar billede killer_bee Nybegynder
30. april 2002 - 17:29 #16
Fedt nok og tak for point :)
Avatar billede tson Nybegynder
30. april 2002 - 17:44 #17
Hm, jeg undrer mig over at mit svar blev afvist, eftersom jeg havde henvist til linkning med netop den nævnte fil.
Avatar billede soreno Praktikant
30. april 2002 - 18:11 #18
jeg giver dig ret, det var en fejl, men jeg så det ikke lige som et løsningsforslag da jeg afviste dig lige inden jeg skrev "30/04-2002 16:15:36". Jeg var ikke klar over at der også var .obj filer i libs dir'et (troede det kun var .lib), derfor troede jeg at du hentydede til at det var en objektfil jeg selv havde lavet..

ved du hvorfor der skal linkes med filen ?

du får point her:
http://www.eksperten.dk/spm/205248
Avatar billede killer_bee Nybegynder
30. april 2002 - 18:11 #19
tson >> jeg tror at din svar blev afvist fordi du ik uddybede den .. hvis du læser lidt hva vi har skrevet vil du måske se det :)
Avatar billede killer_bee Nybegynder
30. april 2002 - 18:13 #20
og for det andet har du heller ikke angivet det rigtige fil..
Avatar billede soreno Praktikant
30. april 2002 - 18:52 #21
sehprolg.obj var den rigtige fil..
Avatar billede killer_bee Nybegynder
30. april 2002 - 19:02 #22
hmm my bad så..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester