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

Ö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.

327097
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
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 					

Warning: This article has been translated automatically

Özellikler

Makale No: 327097 - Son İnceleme: 01/17/2015 05:54:45 - Düzeltme: 1.6

  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbcominterop kbnofix KB327097 KbMttr
Geri bildirim