Udostępnij przez


Ostrzeżenie LNK4248 narzędzi konsolidatora

nierozwiązany token typeref (token) dla "type"; obraz może nie zostać uruchomiony

Uwagi

Typ nie ma definicji w metadanych MSIL.

LNK4248 może wystąpić, gdy istnieje tylko deklaracja przesyłania dalej dla typu w module MSIL (skompilowanym z /clr), gdzie typ jest przywołytyny w module MSIL i gdzie moduł MSIL jest połączony z modułem natywnym, który ma definicję typu.

W takiej sytuacji konsolidator udostępni natywną definicję typu w metadanych MSIL i może to zapewnić prawidłowe zachowanie.

Jeśli jednak deklaracja typu do przodu jest typem CLR, definicja typu natywnego konsolidatora może nie być poprawna

Aby uzyskać więcej informacji, zobacz /clr (kompilacja środowiska uruchomieniowego języka wspólnego).

Aby poprawić ten błąd

  1. Podaj definicję typu w module MSIL.

Przykłady

Poniższy przykład generuje LNK4248. Zdefiniuj strukturę A, aby rozwiązać problem.

// LNK4248.cpp
// compile with: /clr /W1
// LNK4248 expected
struct A;
void Test(A*){}

int main() {
   Test(0);
}

Poniższy przykład zawiera wstępną definicję typu.

// LNK4248_2.cpp
// compile with: /clr /c
class A;   // provide a definition for A here to resolve
A * newA();
int valueA(A * a);

int main() {
   A * a = newA();
   return valueA(a);
}

Poniższy przykład generuje LNK4248.

// LNK4248_3.cpp
// compile with: /c
// post-build command: link LNK4248_2.obj LNK4248_3.obj
class A {
public:
   int b;
};

A* newA() {
   return new A;
}

int valueA(A * a) {
   return (int)a;
}