Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"type" : typ, do którego odwołuje się, był oczekiwany w zestawie "file", typ zdefiniowany w bieżącej jednostce tłumaczenia używany zamiast tego
Plik metadanych zawierający oryginalną definicję typu nie jest przywołyny, a kompilator używa lokalnej definicji typu.
W przypadku ponownego kompilowania pliku można zignorować lub wyłączyć polecenie C4691 z ostrzeżeniem pragma. Oznacza to, że jeśli plik, który tworzysz, jest taki sam jak plik, w którym kompilator oczekuje znalezienia definicji typu, możesz zignorować C4691.
Jednak może wystąpić nieoczekiwane zachowanie, jeśli kompilator używa definicji, która nie pochodzi z tego samego zestawu, który jest przywoływany w metadanych; Typy CLR są wpisywane nie tylko według nazwy typu, ale także przez zestaw. Oznacza to, że typ Z z z.dll zestawu różni się od typu Z od y.dll zestawu.
Przykłady
Ten przykład zawiera oryginalną definicję typu.
// C4691_a.cpp
// compile with: /clr /LD /W1
public ref class Original_Type {};
Ten przykład odwołuje się C4691_a.dll i deklaruje pole typu Original_Type.
// C4691_b.cpp
// compile with: /clr /LD
#using "C4691_a.dll"
public ref class Client {
public:
Original_Type^ ot;
};
Poniższy przykład generuje C4691. Zwróć uwagę, że ten przykład zawiera definicję Original_Type i nie odwołuje się do C4691a.dll.
Aby rozwiązać ten problem, odwołaj się do pliku metadanych zawierającego oryginalną definicję typu i usuń lokalną deklarację i definicję.
// 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 {};