MFC, C++ -- libcmt.lib -- Common Language Runtime-Unterstützung für C#



  • Hallo,

    folgende Einstellungen

    Konfig - Allgemein
    Keine Common Language Runtime-Unterstützung

    C/C++ -- Befehlszeile
    /NODEFAULTLIB:libc

    Linker -- Befehlszeile
    /VERBOSE:LIB

    Kompilieren.
    Alles io.

    1>Durchsuchen der Bibliotheken abgeschlossen.
    1>LINK : warning LNK4098: Standardbibliothek "LIBCMT" steht in
    Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
    1>Das Manifest wird eingebettet...
    1>Das Buildprotokoll wurde unter "file://C:\Temp\Debug\BuildLog.htm"
    gespeichert.
    1>RApp001 - 0 Fehler, 2 Warnung(en)

    -----------------------------------------------------

    folgende Einstellungen -- ich ignoriere einfach msvcrtd.lib

    Konfig - Allgemein
    Common Language Runtime-Unterstützung (/clr)

    C/C++ -- Befehlszeile
    /NODEFAULTLIB:libc

    Linker -- Befehlszeile
    /VERBOSE:LIB

    Linker -- Eingabe -- Biliothek ignorieren
    msvcrtd.lib

    Kompilieren.
    Alles nicht ok.

    Fehler 1 error LNK2005: "private: __thiscall
    type_info::type_info(class type_info const &)" (??
    0type_info@@AAE@ABV0@@Z) ist bereits in MSVCMRTD.lib(ti_inst.obj)
    definiert. LIBCMT.lib
    Fehler 11 error LNK2028: Nicht aufgelöstes Token (0A00048E) ""extern
    "C" int __cdecl _CrtDbgReportW(int,wchar_t const *,int,wchar_t const
    *,wchar_t const *,...)" (?_CrtDbgReportW@@$$J0YAHHPB_WH00ZZ)", auf das
    in Funktion ""wchar_t * __stdcall AtlA2WHelper(wchar_t *,char const
    *,int,unsigned int)" (?AtlA2WHelper@@$$FYGPA_WPA_WPBDHI@Z)" verwiesen
    wird. StdAfx.obj

    -----------------------------------------------------

    folgende Einstellungen -- ich ignoriere nichts

    Konfig - Allgemein
    Common Language Runtime-Unterstützung (/clr)

    C/C++ -- Befehlszeile
    /NODEFAULTLIB:libc

    Linker -- Befehlszeile
    /VERBOSE:LIB

    Kompilieren.
    Alles nicht ok.

    Fehler 1 error LNK2005: _getenv ist bereits in
    msvcrtd.lib(MSVCR80D.dll) definiert. libcmt.lib
    Fehler 2 error LNK2005: __encode_pointer ist bereits in
    msvcrtd.lib(MSVCR80D.dll) definiert. libcmt.lib
    Fehler 3 error LNK2005: __decode_pointer ist bereits in
    msvcrtd.lib(MSVCR80D.dll) definiert. libcmt.lib
    ..
    Fehler 21 error LNK2005: "void __cdecl terminate(void)" (?
    terminate@@YAXXZ) ist bereits in msvcrtd.lib(MSVCR80D.dll) definiert.
    libcmt.lib
    ..
    Fehler 27 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol
    "_main" in Funktion "___tmainCRTStartup". libcmt.lib

    Was kann ich jetzt noch tun, damit
    C# MFC, Common Language Runtime-Unterstützung (/clr)
    trotzdem tut.
    Wäre einfach zu schön. 😉

    Grüße Andrea



  • Du solltest in Deinen Projekten gar nichts irgnorieren!

    Stelle bitte alle Projekte so ein, dass diese die *gleiche* DLL-Version der CRT verwenden; dann hast Du keine Probleme.

    Stelle auch sichher, dass *alle* LIBS mit dem *gleichen* Compiler erzeugt wurden!



  • Stelle bitte alle Projekte so ein, dass diese die *gleiche* DLL-Version der CRT verwenden; dann hast Du keine Probleme.

    Hallo,
    ich habe nur ein Projekt.

    Stelle auch sichher, dass *alle* LIBS mit dem *gleichen* Compiler erzeugt wurden!

    Ja ist so gemacht.

    Ich binde 2 Libs ein.
    a)Pcan_dng.lib http://www.peak-system.com/index_de.html
    b) selbst kompiliert jlib.lib

    *USING THE IJG JPEG LIBRARY

    Copyright (C) 1994-1998, Thomas G. Lane.
    This file is part of the Independent JPEG Group's software.
    For conditions of distribution and use, see the accompanying README file.*

    Eine Idee noch?

    Oder geht evtl. der Mischmasch nicht;-)
    MFC + CLR?
    Kann das sein?
    Die Libs gehen nur für MFC, nicht für CLR

    Grüße Andrea



  • Du kannst jede native LIB in ein CLR-Projekt einbinden (wenn diese gegen die DLL-Version der CRT compiliert wurde).


Log in to reply