warning LNK4070: /OUT:... directive in .EXP differs from output filename
빌드 시 다음과 같은 식의 링커 경고가 발생한다면?
1> Creating library .\Debug\dsoframer.lib and object .\Debug\dsoframer.exp
1>dsoframer.exp : warning LNK4070: /OUT:dsoframer.ocx directive in .EXP differs from output filename '.\Debug\dsoframer.dll'; ignoring directive
원인은, 해당 프로젝트의 바이너리 출력 이름과 ".DEF" 파일에 기록된 이름이 달라서입니다. 위의 메시지와 같은 상황에서는, 출력 DLL이 "dsoframer.dll"인 반면 ".DEF" 파일의 "LIBRARY"에 기록된 이름이 달라서,
LIBRARY dsoframer.ocx
EXPORTS
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
링커 오류가 발생한 것입니다. 따라서, 둘 중의 하나를 맞춰주면 되는데 일례로 "LIBRARY" 쪽을 다음과 같이 바꿔주면 링커 경고가 해결됩니다.
LIBRARY dsoframer.dll
EXPORTS
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]