Share via


Derleyici Uyarısı (düzey 1) C4691

'type' : Başvurulmayan 'file' derlemesinde başvuruda bulunulan tür bekleniyordu, bunun yerine kullanılan geçerli çeviri biriminde tanımlanan tür

Özgün tür tanımını içeren meta veri dosyasına başvurulmuyor ve derleyici yerel tür tanımı kullanıyor.

Dosyayı yeniden oluştururken C4691 yoksayılabilir veya pragma uyarısıyla kapatılabilir. Yani, oluşturduğunuz dosya derleyicinin tür tanımını bulmayı beklediği dosyayla aynıysa, C4691'i yoksayabilirsiniz.

Ancak, derleyici meta verilerde başvuruda bulunan aynı derlemeden olmayan bir tanım kullanırsa beklenmeyen davranış oluşabilir; CLR türleri yalnızca türün adıyla değil, derleme tarafından da yazılır. Başka bir ifadeyle, z.dll derlemesinden Z türü, derleme y.dll'den Z türünden farklıdır.

Örnekler

Bu örnek özgün tür tanımını içerir.

// C4691_a.cpp
// compile with: /clr /LD /W1
public ref class Original_Type {};

Bu örnek C4691_a.dll dosyasına başvurur ve Original_Type türünde bir alan bildirir.

// C4691_b.cpp
// compile with: /clr /LD
#using "C4691_a.dll"
public ref class Client {
public:
   Original_Type^ ot;
};

Aşağıdaki örnek C4691 oluşturur. Bu örnekte Original_Type için bir tanım bulunduğuna ve C4691a.dll dosyasına başvurmadığı dikkat edin.

Çözümlemek için özgün tür tanımını içeren meta veri dosyasına başvurun ve yerel bildirimi ve tanımı kaldırın.

// C4691_c.cpp
// compile with: /clr /LD /W1
// C4691 expected

// Uncomment the following line to resolve.
// #using "C4691_a.dll"
#using "C4691_b.dll"

// Delete the following line to resolve.
ref class Original_Type;

public ref class MyClass : Client {};