c ++ - Windows - VC ++ - Kan ikke '\_ASSERTE' bruges i statisk bygning

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at kompilere en vc ++ kode i statisk tilstand (ved hjælp af/MT) i visuel studio-2008. Men jeg får følgende fejl.


error Please use the /MD switch for \_AFXDLL builds


Jeg forsøgte næsten alle muligheder. Fejlene skyldes makroen '\_ASSERTE'. Men jeg kan ikke fjerne disse makroer som sagt af min superordinat. Enhver hjælp vil blive tildelt med stor tak

Bedste reference


Der fejl fortæller dig noget rigtigt er galt med dit program. Mens \_ASSERTE kan være den nærmeste årsag, er der et dybere underliggende problem her, som du skal adressere.


Dine build scripts eller kildekode er # define-ing \_AFXDLL, som fortæller MFC, at du planlægger at bruge DLL-versionen af ​​MFC. Hvilket kræver, at du også bruger DLL-versionen af ​​CRT. Men/MT-kontakten bringer den statiske version af CRT'en i.


Min stærkt anbefalede løsning ville være at bruge/MD switch til at bruge CRT DLL såvel som MFC DLL. Du forklarer ikke hvorfor du forsøger at bruge/MT, men det er meget sjældent det rigtige valg.


Alternativt, hvis du er forpligtet til/MT-ruten, bør du ikke definere \_AFXDLL.


Endelig er der en lille chance, at du ikke ville bruge MFC overhovedet. I så fald skal du stoppe med at inkludere MFC-overskrifterne (afx * .h), og fejlen vil gå væk.


Martyn

Andre referencer 1


Du skal oprette din egen version af \_ASSERTE, som ikke kalder \_CrtDbgReportW, men kalder snarere din egen rapporteringsfunktion. Problemet er brugen af ​​\_CrtDbgReportW i makroen og intet andet .