Compartilhar via


Aviso das ferramentas de vinculador LNK4248

token typeref não resolvido (token) para 'type'; a imagem pode não ser executada

Um tipo não tem uma definição nos metadados MSIL.

O LNK4248 pode ocorrer quando houver apenas uma declaração de encaminhamento para um tipo em um módulo MSIL (compilado com /clr), em que o tipo é referenciado no módulo MSIL e o módulo MSIL está vinculado a um módulo nativo que tem uma definição para o tipo.

Nessa situação, o vinculador fornecerá a definição de tipo nativo nos metadados MSIL, e isso pode fornecer o comportamento correto.

No entanto, se uma declaração de tipo de encaminhamento for um tipo CLR, a definição de tipo nativo do vinculador poderá não estar correta

Para obter mais informações, consulte /clr (compilação de Common Language Runtime).

Para corrigir este erro

  1. Forneça a definição de tipo no módulo MSIL.

Exemplos

A amostra a seguir gera LNK4248. Defina o struct A a ser resolvido.

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

int main() {
   Test(0);
}

O exemplo a seguir tem uma definição de encaminhamento de um 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);
}

A amostra a seguir gera 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;
}