Doğru C çalışma zamanı (CRT) kitaplığı ile bağlantı nasıl oluşturulur

Makale çevirileri Makale çevirileri
Makale numarası: 140584 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Altı yeniden kullanılabilir bir kitaplık türü vardır:
  • <a1>Kitaplık</a1> (Debug/Release) statik tek akıtılan
  • Statik çok iş parçacıklı kitaplığı (Debug/Release)
  • Dinamik Bağlantı kitaplığı (DLL)(Debug/Release)
Not Her kitaplık, bir hata ayıklama sürümünü ve bir yayım sürümünü vardır.

DLL multithread uyumlu ve tek-iş parçacığı bir CRT kitaplığı sürümü dll dosyaları için sağlanır. Yeniden kitaplığı ya da kitaplığın herhangi bir kullanıcı birden çok iş parçacığı kullanıyorsa, kitaplık, multithread güvenli kitaplık türü olması gerekir.

Not Yalnızca hata ayıklama kitaplıkları, derleyici anahtarlarını /MLd, /MTd ve /MDd bulunan Visual C++ sürüm 4.0 ve sonraki sürümlerinde bulunmaktadır.

Aşağıdaki tabloda, hangi derleyici anahtarı oluşturmak için yeniden kullanılabilir kitaplıkları (DLL türleri multithread uyumlu) bir altı tür kullanılması gerektiğini gösterir. Yeniden kitaplığını kullanan herhangi bir proje derleyici aynı anahtarı kullanmalıdır. Derleyici /ML(default), MLd, /MT MTd, /MD veya /MDd derleyici anahtarlarını kullandığınızda, nesne dosyasında (kitaplığı sütununun altında listelenen) varsayılan kitaplık adı yerleştirir.
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
				
Hangi anahtarı bu komutu kullanarak oluşturulan çağrılırken belirlemek için bir nesnenin modülü görüntüleyebilirsiniz:
   dumpbin /all <object>.obj
				
RAW VERI # 1 başlıklı bölümünde konum. En sağdaki sütunda, varsayılan kitaplıkları listelenir.

Daha fazla bilgi

Kitaplığı yeniden kullanılabilir ve tüm kullanıcıları aynı CRT kitaplık türleri ve bu nedenle aynı derleyici anahtarını kullanmalısınız. Makroları tanımlı (veya tanımlanmadı) zorlamak için üstbilgi dosyaları yeniden kitaplığınızın anahtarlar kullanılabilir derleyici için uygun bir derleyici anahtarı. Bu makaledeki örnek kod, bu makroları kullanımı gösterilmiştir.

Statik olarak seçmeniz için bir kitaplık ya da DLL CRT isterseniz hem statik, hem de DLL yeniden kitaplık türleri sağlamanız gerekir.

CRT kitaplıkları karıştırmak tercih ederseniz, ne, CRT sınırları yapmak çalıştığınızda hakkında dikkatli olmalısınız; böylece iki ayrı kopyasını durumlu, farklı ve ayrı olarak CRT olduğunu unutmayın. Iki kaplarlar öğelerdeki içine almak için birçok yol vardır. Birkaç şunlardır:
  • Iki ayrı kümeler var. Tahsisatı yapamazsınız (açıkça yeni malloc ile ya da böyle--veya örtülü olarak strdup, strstreambuf::str veya benzeri) ve sonra işaretçiyi bir CRT-serbest için sınır arasında.
  • FILE * ya da dosya tanıtıcı bir CRT kenarlığı arasında geçiş yapamazsınız ve beklediğiniz "stdio alt düzey GÇ" çalışılır.
  • Yerel ayarı birinde belirlemek ve ayarlanması diğer bilgisayarın yerel beklediğiniz edemiyor.
Visual C++ 4.0 ile başlayarak, çalışırsa ortaya çıkan bir modüle CRT kitaplığı birden çok kopyasını birleştirmek linker (LNK4098) bir uyarı verecek. Daha fazla bilgi için Yardım dosyası için LNK4098 arayın.

Örnek kod

Aşağıdaki kod yeniden kitaplığın üstbilgi dosyasında doğru derleyici anahtarı tutarlı kullanımını sağlamak için kullanılabilir:
// 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
				

Özellikler

Makale numarası: 140584 - Last Review: 1 Temmuz 2004 Perşembe - Gözden geçirme: 3.1
Bu makaledeki bilginin uygulandığı durum:
  • 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 Aboneliği
  • 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
Anahtar Kelimeler: 
kbmt kbcrt kbhowto KB140584 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:140584

Geri Bildirim Ver

 

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