다음을 통해 공유


링커 도구 경고 LNK4248

'type'에 대한 해결되지 않은 typeref 토큰(토큰) 이미지가 실행되지 않을 수 있음

형식에는 MSIL 메타데이터에 정의가 없습니다.

LNK4248 MSIL 모듈에 형식에 대한 정방향 선언만 있는 경우(/clr컴파일됨), MSIL 모듈에서 형식이 참조되고 MSIL 모듈이 형식에 대한 정의가 있는 네이티브 모듈과 연결된 경우 발생할 수 있습니다.

이 경우 링커는 MSIL 메타데이터에 네이티브 형식 정의를 제공하고 올바른 동작을 제공할 수 있습니다.

그러나 정방향 형식 선언이 CLR 형식인 경우 링커의 네이티브 형식 정의가 올바르지 않을 수 있습니다.

자세한 내용은 /clr(공용 언어 런타임 컴파일)을 참조하세요.

이 오류를 해결하려면

  1. MSIL 모듈에서 형식 정의를 제공합니다.

예제

다음 샘플에서는 LNK4248 생성합니다. 확인할 구조체 A를 정의합니다.

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

int main() {
   Test(0);
}

다음 샘플에는 형식의 정방향 정의가 있습니다.

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

다음 샘플에서는 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;
}