Hata: Visual C++ .NET derleyicisi aynı Boolean dönüş türü için iki farklı yerel türleri oluşturur

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

Bu Sayfada

Belirtiler

Visual C++ .NET derleyici her ikisini de oluşturur NATIVE_TYPE_U1 ve aynı mantıksal için NATIVE_TYPE_VARIANTBOOL döndürme MarshalAs(UnmanagedType::VariantBool) ile işaretlenmiş türü.

Durum

Microsoft, Microsoft bir hata olduğunu onaylamıştır bu makalenin başında listelenen ürünlerden.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

  1. Visual C++ .NET ile yeni bir yönetilen C++ uygulama oluşturma TestBoolean adlı bir proje.
  2. Solution Explorer'da (Çözüm Gezgini) TestBoolean.cpp dosyasını çift tıklatın ve sonra da bu dosyasındaki kodu aşağıdaki kodla değiştirin:
    // This is the main project file for the Visual C++ Application project that is 
    // generated by using an Application Wizard.
    
    #include "stdafx.h"
    
    #using <mscorlib.dll>
    #include <tchar.h>
    
    using namespace System;
    
    __gc class TestBoolean
    {
    public:
    	[returnvalue:System::Runtime::InteropServices::MarshalAs
    	(System::Runtime::InteropServices::UnmanagedType::VariantBool)]
    	bool RetValBoolean ([System::Runtime::InteropServices::MarshalAs
    	(System::Runtime::InteropServices::UnmanagedType::VariantBool)] bool b)
    	{
    		return b;
    	}
    };
    
    int _tmain(void)
    {
    	TestBoolean *test = new TestBoolean();
    	Console::WriteLine(test->RetValBoolean(true));
    	return 0;
    }
    						
  3. Projeyi oluşturmak için CTRL + ÜST KRKT + K tuşlarına basın.
  4. Komut isteminde aşağıdakini yazın:
    	c:\>ildasm.exe /adv
    						
    bu ildasm gelişmiş modda başlatır.
  5. TestBoolean.exe ildasm'de açın.

  6. Görünüm menüsünde Metalnfo ' ı tıklatın ve ardından Göster!.

    Üretilen meta verileri inceleyin. Gördüğünüz derleyici, dönüş değeri için iki farklı yerel türlerini gösterir.
    Global fields
    -------------------------------------------------------
    
    Global MemberRefs
    -------------------------------------------------------
    
    TypeDef #1
    -------------------------------------------------------
    	TypDefName: TestBoolean  (02000002)
    	Flags     : [NotPublic] [AutoLayout] [Class] [AnsiClass]  (00000000)
    	Extends   : 01000008 [TypeRef] System.Object
    	Method #1 
    	-------------------------------------------------------
    		MethodName: RetValBoolean (06000003)
    		Flags     : [Public] [ReuseSlot]  (00000006)
    		RVA       : 0x00001000
    		ImplFlags : [IL] [Managed]  (00000000)
    		CallCnvntn: [DEFAULT]
    		hasThis 
    		ReturnType: Boolean
    		1 Arguments
    			Argument #1:  Boolean
    		3 Parameters
    			(0) ParamToken : (08000001) Name :  flags: [HasFieldMarshal]  (00002000)
    				NATIVE_TYPE_U1 
    			(0) ParamToken : (08000002) Name :  flags: [HasFieldMarshal]  (00002000)
    				NATIVE_TYPE_VARIANTBOOL 
    			(1) ParamToken : (08000003) Name : b flags: [HasFieldMarshal]  (00002000)
    				NATIVE_TYPE_VARIANTBOOL 
    					

Özellikler

Makale numarası: 327097 - Last Review: 27 Eylül 2005 Salı - Gözden geçirme: 1.6
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbmt kbhotfixserver kbqfe kbbug kbcominterop kbnofix KB327097 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:327097

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