Sdílet prostřednictvím


Upozornění linkerů LNK4248

nevyřešený token typeref (token) pro "typ"; Image se nemusí spustit

Typ neobsahuje definici v metadatech jazyka MSIL.

LNK4248 může dojít v případě, že existuje pouze forward deklarace pro typ v modulu MSIL (zkompilovaný pomocí /clr), kde je typ odkazován v modulu MSIL a kde je modul MSIL propojený s nativním modulem, který má definici pro daný typ.

V takovém případě linker poskytne definici nativního typu v metadatech jazyka MSIL, což může poskytnout správné chování.

Pokud je však deklarace typu forward type type typu CLR, nemusí být definice nativního typu linkeru správná.

Další informace naleznete v tématu /clr (Common Language Runtime Compilation).

Oprava této chyby

  1. Zadejte definici typu v modulu MSIL.

Příklady

Následující ukázka vygeneruje LNK4248. Definujte strukturu A, která se má přeložit.

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

int main() {
   Test(0);
}

Následující ukázka obsahuje definici typu dopředu.

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

Následující ukázka vygeneruje 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;
}