Avviso degli strumenti del linker LNK4248

token typeref non risolto (token) per 'type'; l'immagine potrebbe non essere eseguita

Un tipo non ha una definizione nei metadati MSIL.

LNK4248 può verificarsi quando è presente solo una dichiarazione forward per un tipo in un modulo MSIL (compilato con /clr), in cui viene fatto riferimento al tipo nel modulo MSIL e dove il modulo MSIL è collegato a un modulo nativo con una definizione per il tipo.

In questo caso, il linker fornirà la definizione del tipo nativo nei metadati MSIL e ciò potrebbe fornire il comportamento corretto.

Tuttavia, se una dichiarazione di tipo forward è un tipo CLR, la definizione del tipo nativo del linker potrebbe non essere corretta

Per altre informazioni, vedere /clr (Compilazione Common Language Runtime).

Per correggere l'errore

  1. Specificare la definizione del tipo nel modulo MSIL.

Esempi

L'esempio seguente genera LNK4248. Definire lo struct A da risolvere.

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

int main() {
   Test(0);
}

Nell'esempio seguente è presente una definizione forward di un tipo .

// 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);
}

L'esempio seguente genera 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;
}