링커 도구 경고 LNK4248
'type'에 대한 해결되지 않은 typeref 토큰(토큰) 이미지가 실행되지 않을 수 있음
형식에는 MSIL 메타데이터에 정의가 없습니다.
LNK4248 MSIL 모듈에 형식에 대한 정방향 선언만 있는 경우(/clr로 컴파일됨), MSIL 모듈에서 형식이 참조되고 MSIL 모듈이 형식에 대한 정의가 있는 네이티브 모듈과 연결된 경우 발생할 수 있습니다.
이 경우 링커는 MSIL 메타데이터에 네이티브 형식 정의를 제공하고 올바른 동작을 제공할 수 있습니다.
그러나 정방향 형식 선언이 CLR 형식인 경우 링커의 네이티브 형식 정의가 올바르지 않을 수 있습니다.
자세한 내용은 /clr(공용 언어 런타임 컴파일)을 참조하세요.
이 오류를 해결하려면
- 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;
}
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기