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