c ++ - Fejl ved statisk opbygning af et Windows-program

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en applikation, der kompilerer og fungerer fint, når jeg dynamisk forbinder alt, men når jeg vil have en statisk opbygning af den, vil den ikke kompilere.


I Visual Studio 2010 sætte jeg Brug MFC'en i et Statisk Bibliotek valgmulighed.


Når jeg gør det, får jeg denne fejl:


Fejl 1 fejl LNK2001: uløst eksternt symbol \_wWinMain @ 16 LIBCMT.lib (wwincrt0.obj)


Jeg har forsøgt at tilføje LIBCMT.lib som et ekstra bibliotek, men det ændrer ikke noget.


Eventuelle ideer til løsning af dette problem?

Bedste reference


Fra meddelelsen om, at den mangler WinMain, betyder det, at et stykke af dit projekt bliver bygget som et program og IKKE som et bibliotek.


Prøv en fuld ombygning og sørg for, at alle relevante muligheder er indstillet til at opbygge et statisk bibliotek. Jeg tror libcmt.lib bør kun knyttes til din endelige ansøgning, IKKE til biblioteket.

Andre referencer 1


Når du bygger programmet, er der compiler flag til at indstille Unicode/MBCS, Multi/Single threaded og forskellige andre ting. Hvis du kompilerer en eller anden kilde med et sæt flag og anden kilde med forskellige flag, så får du ofte linkfejl sådan.


Kontroller, at hele kilden bruger de samme flag, herunder alle dine egne biblioteker.


Den specifikke fejl du har, siger, at linkeren indeholder den binære wwincrt0.obj fra biblioteket LIBCMT.lib. wwincrt0.obj henviser til en funktion wWinMain () og linkeren ved ikke, hvor de skal finde den.


LIBCMT er den multi-threaded version af LIBC. Du vil linke til en af ​​dem, men aldrig begge.


wwincrt0 er den brede (UNICODE) version af CRT (C Run Time) startkode, som vil starte din kode.


WinMain () er Windows-hovedfunktionen, og wWinMain () er den brede (UNICODE) version af WinMain ().


Jeg vil gætte, at nogle af din kode er kompileret med compiler flag/MT og nogle er kompileret med et andet flag (/MTd,/MD,/MDd,/LD eller/LDd).


Min anden gigant ville være at nogle er kompileret med/DUNICODE og nogle med/DMBCS.