Makale numarası: 125749 - Son Gözden Geçirme: 13 Mart 2008 Perşembe - Gözden geçirme: 8.0

R6025 Visual C++ çalışma zamanı hata açıklaması

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Bu makalede, bir program geliştirirken oluşabilecek bir sorun açıklanır. Bu makalede açıklanan soruna benzer bir sorunu yaşamaya devam ediyorsanız, bu farklı bir sorun olabilir. Belirli bir sorunu ile ilgili sorunları aramak için lütfen ürün adı arama sonuçlarınızı daraltmak için ekleyin. Benzer sorunları gidermek için <a0></a0>, bu makalenin ilerisindeki "benzer sorunlar ve çözümleri" bölümüne bakın.

Belirtiler

C++ programı başarısız olur ve aşağıdaki çalışma zamanı hatası bildiriyor:
R6025 çalışma zamanı hatası
-yalnızca sanal işlev çağrısı

Neden

Uygulamanız dolaylı bir saf sanal üye işlevi bir bağlamda işlevine bir çağrı geçersiz çağırdığında, bu hata oluşur. Çoğu durumda, derleyici bunu algılar ve uygulama oluştururken bir hata bildirir. Ancak, kodunuzun nasıl yazıldığını bağlı olarak, bazen sorun yalnızca çalışma zamanı sırasında algılanır.

Oluşturucu çağrısı bağlamında ya da soyut taban sınıfının yıkıcı saf sanal bir işlev dolaylı olarak çağırmak hata oluşur. Bu, bazı daha fazla açıklama ile birlikte aşağıdaki örnek kodda gösterilmiştir.

Çözüm

Bu nedenle, yalnızca sanal işlev çağrısı bulup değil verilir; böylece kodu yeniden yazmak gereken yalnızca bir sanal işlevinin çağrılması bir programlama hatası var.

Yalnızca bir sanal işlev çağrısı bulmanın bir yolu saf sanal işlev DebugBreak Windows API işlevi çağıran bir uygulama ile değiştirmektir. Hata ayıklayıcısını kullanarak, DebugBreak kodlanmış kesme noktası neden olur. Bu kesme noktasında çalışan kodu durduğunda, işlev olarak adlandırılıyordu görmek için çağrı yığını görüntüleyebilirsiniz.

Yalnızca bir sanal işlev çağrısı bulmanın başka _purecall işlevi PureVirt.c içinde bulunan bir kesme noktası ayarlamak için yoludur. Bu işlev, en son ne oluşmasını izlemek için yığın değişmeden kalmasını avantajı vardır.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesindeki "Build hataları" bölümündeki "C çalışma zamanı hataları R6002 aracılığıyla R6025" sayfasına bakın:
http://msdn2.microsoft.com/en-us/library/aa277044(VS.60).aspx (http://msdn2.microsoft.com/en-us/library/aa277044(VS.60).aspx)
Not R6025 hata el kitaplarını veya Visual C++ sürüm 2.x veya altında bulunan çevrimiçi Yardım belgelenmiştir. Ancak, kısa bir süreliğine Readme.wri dosyasının Visual C++ sürüm 2.0 ile birlikte gelen bölümü 3'te açıklanmıştır.

Örnek kod

   /* Compile options needed: none
   */ 

   class A;

   void fcn( A* );

   class A
   {
   public:
       virtual void f() = 0;
       A() { fcn( this ); }
   };

   class B : A
   {
       void f() { }
   };

   void fcn( A* p )
   {
       p->f();
   }

   // The declaration below invokes class B's constructor, which
   // first calls class A's constructor, which calls fcn. Then
   // fcn calls A::f, which is a pure virtual function, and
   // this causes the run-time error. B has not been constructed
   // at this point, so the B::f cannot be called. You would not
   // want it to be called because it could depend on something
   // in B that has not been initialized yet.

   B b;

   void main()
   {
   }
				

Benzer sorunlar ve çözümleri

Bu makalede açıklanan soruna benzer bir sorunu yaşamaya devam ediyorsanız, farklı bir sorun olabilir. Benzer sorunlar ve çözümleri hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
240437  (http://support.microsoft.com/kb/240437/ ) Money çalışma zamanı hatası: "R6025 - yalnızca sanal işlev çağrısı"
308260  (http://support.microsoft.com/kb/308260/ ) Windows 2000, Windows XP, Windows Server 2003 veya Windows Vista tabanlı bilgisayarlarda Internet Explorer 6 ve Internet Explorer 7 komut dosyası sorunları nasıl giderilir
267572  (http://support.microsoft.com/kb/267572/ ) WD2000: Hata iletisi: "çalışma zamanı hatası '5'" Word'Ü başlattığınızda
170409  (http://support.microsoft.com/kb/170409/ ) SBFM97: Quickbooks veri alma MS Visual C++ çalışma zamanı hataları
309299  (http://support.microsoft.com/kb/309299/ ) Bazı Web sayfalarına gözatmak için çalışma zamanı hatası

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 4.1 Aboneliği
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 1.52 Professional Edition
  • Microsoft Visual C++ 1.51
  • Microsoft Visual C++ 1.5 Professional Edition
  • Microsoft Visual C++ 1.0 Professional Edition
Anahtar Kelimeler: 
kbmt kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb KB125749 KbMttr
Otomatik TercümeOtomatik Tercüme
Ö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:125749  (http://support.microsoft.com/kb/125749/en-us/ )