Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
unresolved typeref token (token) for 'type'; image may not run
A type doesn't have a definition in MSIL metadata.
LNK4248 can occur when there is only a forward declaration for a type in an MSIL module (compiled with /clr), where the type is referenced in the MSIL module, and where the MSIL module is linked with a native module that has a definition for the type.
In this situation, the linker will provide the native type definition in the MSIL metadata, and this may provide for the correct behavior.
However, if a forward type declaration is a CLR type, then the linker's native type definition may not be correct
For more information, see /clr (Common Language Runtime Compilation).
To correct this error
- Provide the type definition in the MSIL module.
Examples
The following sample generates LNK4248. Define struct A to resolve.
// LNK4248.cpp
// compile with: /clr /W1
// LNK4248 expected
struct A;
void Test(A*){}
int main() {
Test(0);
}
The following sample has a forward definition of a 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);
}
The following sample generates 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;
}