none
"정적 라이브러리에서 MFC" 사용 방식으로 빌드했는대도 mfc100u.dll오류? RRS feed

  • 질문

  • "정적 라이브러리에서 MFC"  사용 방식으로 빌드에 성공했고 

    정상적으로 *.exe파일도 생성이되었습니다. 

    그런대 *.exe파일을 다른 pc에서 실행하면 mfc100u.dll을 찾을 수 없습니다와 같은 에러가 발생합니다.

    왜 그런건가요?

    2012년 5월 23일 수요일 오전 2:49

답변

  • 우선 생성된 exe 파일을 "Depends.exe (Dependency Walker)" 프로그램으로 mfc100u.dll 에 대한 의존성이 있는지 확인해 보세요.

    mfc100u.dll 이라고 되어 있는 것을 보니 아마도 Release 모드로 빌드된 것 같은데, 혹시 "정적 MFC 라이브러리 사용"은 Debug 빌드 설정에서만 하고 Release 빌드 설정에서는 안한 것이 아닌가 확인해 보세요. ^^
    2012년 5월 23일 수요일 오전 3:27
  • 재미있는 경우군요. ^^; 그런 경우 분명히 mfc100u.dll 에 대한 의존성이 없어져야 하는 것이 맞는데요. 애석하게도 더 해볼것이 없습니다.
    혹시 검사하는 EXE 가 변경된 빌드 속성을 반영한 그것인지 한번 더 확인해 보시겠어요. 예를 들어, 지금 depends.exe 로 열어서 검사했던 그 EXE 파일을 지운 다음, 다시 release 빌드해서 생성되는 그 DLL 이 맞는지 확인이 필요할 것 같습니다.

    이도 저도 아니라면,,, 일단 제 수준에서는 더 조언해 드릴 것이 없군요. ^^

    2012년 5월 23일 수요일 오전 5:11
  • SeongTae Jeong 님의 말씀처럼 Release 모드 속성에서 "정적 라이브러리에서 MFC 사용" 을 선택하셨다면
    "mfc100u.dll" 이 필요하다는 오류가 나오지 않아야 정상입니다.

    사실 설정상에서 어의없는 실수가 있을수도 있습니다. 많은 경우가 있지만, 체크하지 못한 오류로 빌드에 실수가 있어서
    실행파일이 새로만들어지지 못하고 이전에 생성된 실행파일 계속 참고 하고 있거나 ( 실행파일의 생성 시간 확인 해보면 알수 있음 )
    프로젝트 속성에서 실행파일 생성 경로를 다른곳으로 설정하셨거나, 여러개의 프로젝트를 한개의 프로젝트로 설정했는데,
    다른 프로젝트의 속성을 변경하셨거나 등... 다양한 경우가 있을수 있습니다.

    아니면 자신의 프로젝트에 자신이 만들지 않은 특별한 컴포넌트나 라이브러리를 사용하는지 여부에 따라서도 이런 현상이 발생할수 있으니
    특별한 라이브러리나 컴포넌트를 사용하는지 여부도 알려주시기 바랍니다.


    2012년 5월 23일 수요일 오전 8:07
    중재자

모든 응답

  • 우선 생성된 exe 파일을 "Depends.exe (Dependency Walker)" 프로그램으로 mfc100u.dll 에 대한 의존성이 있는지 확인해 보세요.

    mfc100u.dll 이라고 되어 있는 것을 보니 아마도 Release 모드로 빌드된 것 같은데, 혹시 "정적 MFC 라이브러리 사용"은 Debug 빌드 설정에서만 하고 Release 빌드 설정에서는 안한 것이 아닌가 확인해 보세요. ^^
    2012년 5월 23일 수요일 오전 3:27
  • 1. mfc100u.dll에 대한 의존성이 있는것을 확인 하였습니다.

    2. Release 모드에 "정적 MFC 라이브러리 사용"이 선택되어있습니다.

    결론: 제가 어떻게하면 *.exe파일에 mfc100u.dll을 포함시켜 배포 할 수 있을까요?

    2012년 5월 23일 수요일 오전 3:52
  • 재미있는 경우군요. ^^; 그런 경우 분명히 mfc100u.dll 에 대한 의존성이 없어져야 하는 것이 맞는데요. 애석하게도 더 해볼것이 없습니다.
    혹시 검사하는 EXE 가 변경된 빌드 속성을 반영한 그것인지 한번 더 확인해 보시겠어요. 예를 들어, 지금 depends.exe 로 열어서 검사했던 그 EXE 파일을 지운 다음, 다시 release 빌드해서 생성되는 그 DLL 이 맞는지 확인이 필요할 것 같습니다.

    이도 저도 아니라면,,, 일단 제 수준에서는 더 조언해 드릴 것이 없군요. ^^

    2012년 5월 23일 수요일 오전 5:11
  • SeongTae Jeong 님의 말씀처럼 Release 모드 속성에서 "정적 라이브러리에서 MFC 사용" 을 선택하셨다면
    "mfc100u.dll" 이 필요하다는 오류가 나오지 않아야 정상입니다.

    사실 설정상에서 어의없는 실수가 있을수도 있습니다. 많은 경우가 있지만, 체크하지 못한 오류로 빌드에 실수가 있어서
    실행파일이 새로만들어지지 못하고 이전에 생성된 실행파일 계속 참고 하고 있거나 ( 실행파일의 생성 시간 확인 해보면 알수 있음 )
    프로젝트 속성에서 실행파일 생성 경로를 다른곳으로 설정하셨거나, 여러개의 프로젝트를 한개의 프로젝트로 설정했는데,
    다른 프로젝트의 속성을 변경하셨거나 등... 다양한 경우가 있을수 있습니다.

    아니면 자신의 프로젝트에 자신이 만들지 않은 특별한 컴포넌트나 라이브러리를 사용하는지 여부에 따라서도 이런 현상이 발생할수 있으니
    특별한 라이브러리나 컴포넌트를 사용하는지 여부도 알려주시기 바랍니다.


    2012년 5월 23일 수요일 오전 8:07
    중재자