Způsob propojení s knihovnou správné C-prováděcí (CRT)

Překlady článku Překlady článku
ID článku: 140584 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Existuje šest typů opakovaně použitelný knihoven:
  • Statické jedním podprocesem Library (Debug a Release)
  • Statická knihovna více podprocesy (Debug a Release)
  • Dynamické Propojení knihovny (DLL)(Debug/Release)
Poznámka: Každá knihovna má ladicí verze a vydání verze.

DLL multithread bezpečné a jeden podproces verzi knihovny CRT nejsou poskytovány pro dll. Pokud opakovaně použitelný knihovny nebo jakýkoli uživatel knihovny používá více podprocesů, potom knihovnu musí být typu knihovny multithread bezpečné.

Poznámka: Ladění knihoven a přepínače kompilátor /MLd, /MTd a /MDd jsou pouze k dispozici v Visual C++ verze 4.0 a novější.

Následující tabulka zobrazuje, které kompilátor přepínač má být použita pro vytváření jednotlivých šest typů opakovaně použitelný knihoven (multithread bezpečné jsou všechny typy DLL). Projekt, který používá opakovaně použitelný knihovny byste pomocí stejného přepínače kompilátoru. Při použití přepínače kompilátor /ML(default), MLd, /MT, MTd, /MD nebo /MDd umístí kompilátor soubor objektů výchozí název knihovny (uvedena ve sloupci knihovny).
Reusable Library            Switch    Library    Macro(s) Defined
----------------------------------------------------------------
Single Threaded             /ML       LIBC       (none)
Static MultiThread          /MT       LIBCMT     _MT
Dynamic Link (DLL)          /MD       MSVCRT     _MT and _DLL
Debug Single Threaded       /MLd      LIBCD      _DEBUG
Debug Static MultiThread    /MTd      LIBCMTD    _DEBUG and _MT
Debug Dynamic Link (DLL)    /MDd      MSVCRTD    _DEBUG, _MT, and _DLL
				
Zobrazit modul objektu určit, které přepínač byla použita při byl sestaven pomocí tohoto příkazu:
   dumpbin /all <object>.obj
				
oblast v části s názvem RAW DATA # 1. Ve sloupci nejvíce vpravo bude uveden výchozí knihovny.

Další informace

Opakovaně použitelný knihovny a všechny jeho uživatelé měli použít stejné typy CRT knihovny a proto stejného přepínače kompilátoru. Makra definovaná (nebo není definována) pro každý kompilátor přepínače lze použít v záhlaví soubory opakovaně použitelný knihovny vynutit přepínač správné kompilátoru. V tomto článku ukázkový kód demonstruje použití těchto maker.

Pokud chcete uživatelům knihovny moci zvolit statické nebo DLL CRT, měli byste poskytnout static a typy opakovaně použitelný knihovny DLL.

Pokud zvolíte smíchat CRT knihoven, nezapomeňte mít dvě samostatné kopie CRT s samostatné a rozdílné stavy, takže musí být opatrní zkuste provést přes hranice CRT. Do potíže s dvěma CRTs získat mnoha způsoby. Zde jsou jen několik:
  • Existují dva samostatné haldách. Nelze přidělit (explicitně s malloc nové, nebo tak,--nebo implicitně s strdup strstreambuf::str a tak dále) a předat ukazatel přes hranice CRT k být uvolněno.
  • Nelze předat FILE * nebo soubor úchyt přes hranice CRT a očekávat "stdio nízkoúrovňové IO" pracovat.
  • Nelze nastavit národní prostředí v jednom a očekávají národního druhého uživatele chcete nastavit.
Počínaje Visual C++ 4.0 linker vydá varování (LNK4098) Pokud výsledné modulu pokusí kombinovat více než jednu kopii knihovny CRT. Další informace vyhledejte v souboru nápovědy LNK4098.

Ukázkový kód

Následující kód lze použít v záhlaví souboru opakovaně použitelný knihovny zajistit konzistentní použití přepínače správné kompilátoru:
// MyReusableStaticSingleThreadReleaseLibrary.h
#if defined(_MT) || defined(_DEBUG)
    #error The /ML compiler switch is required.
#endif

// MyReusableStaticMultithreadReleaseLibrary.h
#if !defined(_MT) || defined(_DLL) || defined(_DEBUG)
    #error The /MT compiler switch is required.
#endif

// MyReusableDynamicLinkReleaseLibrary.h
#if !defined(_MT) || !defined(_DLL) || defined(_DEBUG)
    #error The /MD compiler switch is required.
#endif

// MyReusableStaticSingleThreadDebugLibrary.h
#if defined(_MT) || !defined(_DEBUG)
    #error The /MLd compiler switch is required.
#endif

// MyReusableStaticMultithreadDebugLibrary.h
#if !defined(_MT) || defined(_DLL) || !defined(_DEBUG)
    #error The /MTd compiler switch is required.
#endif

// MyReusableDynamicLinkDebugLibrary.h
#if !defined(_MT) || !defined(_DLL) || !defined(_DEBUG)
    #error The /MDd compiler switch is required.
#endif
				

Vlastnosti

ID článku: 140584 - Poslední aktualizace: 1. července 2004 - Revize: 3.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 2.2
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 5.0 Standard Edition
  • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
Klíčová slova: 
kbmt kbcrt kbhowto KB140584 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:140584

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com