Partager via


Avertissement des outils Éditeur de liens LNK4248

jeton typeref non résolu (jeton) pour « type » ; l’image peut ne pas s’exécuter

Un type n’a pas de définition dans les métadonnées MSIL.

LNK4248 peut se produire lorsqu’il n’existe qu’une déclaration de transfert pour un type dans un module MSIL (compilé avec /clr), où le type est référencé dans le module MSIL et où le module MSIL est lié à un module natif qui a une définition pour le type.

Dans ce cas, l’éditeur de liens fournit la définition de type natif dans les métadonnées MSIL, ce qui peut fournir le comportement correct.

Toutefois, si une déclaration de type forward est un type CLR, la définition de type natif de l’éditeur de liens peut ne pas être correcte

Pour plus d’informations, consultez l’article /clr (Compilation pour le Common Language Runtime).

Pour corriger cette erreur

  1. Fournissez la définition de type dans le module MSIL.

Exemples

L’exemple suivant génère LNK4248. Définissez le struct A à résoudre.

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

int main() {
   Test(0);
}

L’exemple suivant a une définition de transfert d’un type.

// 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’exemple suivant génère 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;
}