Toon posts:

[C++] Linker error ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
code:
1
2
3
4
5
Linking...
   Creating library ReleaseMinSize/TestDLL.lib and object ReleaseMinSize/TestDLL.exp
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
ReleaseMinSize/TestDLL.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.


Deze krijg ik bij een RELEASE build. Bij een DEBUG build krijg ik deze niet?

Ik heb al even informatie gaan inwinnen op google, maar daar staat alleen maar dingen van Console application/Windows GUI application. Wat ik hier heb is een windows DLL (ATL Com project). Voor zover ik weet bestaat _main niet in dlls?

Waar zou mijn fout ergens aan kunnen liggen?

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 22-08 19:17
bij de hoeveelheid gegeven info. Welk platform, welke compiler( Windows met visual studio gok ik), post eens wat code etc.

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Het lijkt me hier om VC++ te gaan.
Wel toevallig trouwens, dit had ik gister ook bij het compileren van een test plug-in voor Winamp. Kwam er na een half uurtje zoeken uit. Er stond namelijk _DllMainCRTStartUp in de source, en die moet zogenaamd DllMain aanroepen, maar omdat DllMain niet in die voorbeeldsource zat kreeg ik deze error. Simpel deze functie verwijderen uit de source loste het probleem op. Als dit je probleem is kan je het waarschijnlijk ook oplossen door een DllMain functie te maken. (Voor meer info: msdn ). Indien dat het niet is, kijk eerst eens naar de mogelijke oorzaken van LNK2001: msdn (zo is er voor elke error wel een aparte MSDN entry).
ParaDot schreef op 29 March 2003 @ 09:29:
bij de hoeveelheid gegeven info. Welk platform, welke compiler( Windows met visual studio gok ik), post eens wat code etc.
Het is meestal een beetje moeilijk om code te posten bij een linker error. ;)

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 22-08 19:17
Bij gcc staat er een filenaam en een regel nummer bij, ik ging er vanuit dat dat bij VC++ ook zo is :)

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Nu haal je de compiler en de linker door elkaar. Dit is wat er gebeurd bij gcc in een vergelijkbare situatie:
code:
1
2
3
4
5
6
eric@zeus:~/code/test$ cat linkererror.c
#include <stdio.h>
eric@zeus:~/code/test$ gcc linkererror.c
/usr/lib/crt1.o: In function `_start':
/usr/lib/crt1.o(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 22-08 19:17
Bij undefined references zet hij het er wel bij :)

test.h:

extern char aap;


test.c:

aap = 'A';

dan geeft ie keurig aan waar het fout gaat :)..

maargoed, dat is wat offtopic.

unresolved external symbol _main
misschien heb je main(); niet helemaal goed gedaan? Dat het bij de ene build goed gaat en bij de andere niet, kan komen door een hoger "zeik" level. make geeft ook minder snel errors dan make dist ;)

Verwijderd

Je moet even ATL_MIN_CRT (of iets in die richting) bij je preprocessor definitions weghalen.

Verwijderd

Topicstarter
idd :)
dat werkt!! vree bedankt!!

Verwijderd

Hou er rekening mee overigens dat als je 'm build als minsize dat je de atl.dll bij leverd aan je clients.

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Verwijderd schreef op 29 March 2003 @ 14:55:
Je moet even ATL_MIN_CRT (of iets in die richting) bij je preprocessor definitions weghalen.
Oh ja, die oplossing kwam ik gister ook tegen op Google. ;)

edit:
Google: "unresolved external symbol _main" dll
Fuck hey, eerste hit zelfs! O-)

[ Voor 34% gewijzigd door Ericston op 29-03-2003 16:05 ]

Pagina: 1