2013-06-14 7 views
0

프로젝트는 Visual Studio의 디버그 모드에서 정상적으로 실행되지만 생성 된 EXE를 두 번 클릭하면 일부 DLL이 누락되었다고 표시됩니다. exe 옆에있는 누락 된 dll을 복사하고 두 번 클릭하면 오류 메시지 대화 상자가 나타나지 않지만 아무 것도 발생하지 않았습니다. 프로젝트에 Qt 기반 GUI가 있고 일부 외부 png 파일을 참조합니다.Visual Studio - Visual Studio 외부에서 프로젝트 실행

어떻게 Visual Studio에서 EXE를 실행합니까? 어떻게하면 내 스스로 exe를 실행할 수 있습니까? 다른 컴퓨터에서 실행되도록 프로젝트의 설치 프로그램을 만들어야합니까?

+0

릴리스 모드에서 솔루션을 빌드하십시오. bin \ exe에서 EXE 파일을 찾을 수 있습니다. 프로젝트에서 필요한 모든 라이브러리와 파일은이 폴더에 있어야합니다. 따라서 다른 컴퓨터로 옮길 때는 복사하는 것을 잊지 마십시오. –

+1

VS에서 작업 디렉토리가 올바르게 설정되었습니다. 그래서 VS에서 실행할 수 있습니다. – user1764961

답변

0

프로세스가 DLL을 전체 경로없이 이름으로로드해야하는 경우 여러 위치가 검사됩니다. 그 중 하나가 현재 작업 디렉토리 일 수 있습니다. (검색 경로의 세부 정보는 기록 및 보안 문제로 인해 복잡해 지므로 MSDN에서 LoadLibrarySetDllDirectory을 찾아보십시오.

프로젝트의 속성 페이지를 살펴보면 디버깅 탭을 클릭하면 Visual Studio에서 프로그램을 시작할 때 작업 디렉토리로 설정된 디렉토리가 표시됩니다. 아이콘을 두 번 클릭하면 작업 디렉토리가 실행 파일의 디렉토리가 될 것입니다. 이들이 다르다면, 왜 한 경우에는 DLL을 찾을 수 있지만 다른 DLL에서는 찾을 수없는 이유를 설명 할 수 있습니다.

LoadLibrary를 직접 호출하는 경우 가장 좋은 방법은 항상 라이브러리의 전체 경로를 지정하는 것입니다. 일반적으로 GetModuleFileName을 사용하여 실행 파일의 전체 경로를 찾은 다음 파일 이름 부분을 DLL 이름 또는 실행 파일에서 DLL로 상대 경로로 바꿉니다.

암시 적으로 연결된 DLL을로드하지 못한 경우 DLL이 실행 파일과 동일한 디렉터리에 있는지 확인해야합니다.

관련 문제