1

두 개의 프로젝트 (하나의 VB.net과 다른 VC++)가있는 Visual Studio 솔루션이 있습니다. VC++ 프로젝트는 Nvidia의 드라이버 API 인 Nvapi를 둘러싼 래퍼입니다. nvapi.lib 파일과 관련 헤더 파일입니다. 내 코드를 컴파일하고 내 개발 컴퓨터에서 잘 실행되지만 전체 솔루션 디렉터리를 다른 컴퓨터에 복사하고 실행 파일을 실행하면 VC++ 프로젝트 dll 또는 해당 종속성 중 하나를 찾을 수 없거나로드되지 않는다는 오류가 발생합니다. 내 코드가 nvapi 래퍼를 사용하지만 충돌이 발생할 때까지 계속 실행됩니다. 설치 프로그램을 생성하고 그런 식으로 프로그램을 설치하도록 프로젝트 게시를 시도했지만 같은 오류가 발생합니다.Visual Studio 2010의 참조 문제

다른 컴퓨터에 VS2010을 설치하고 문제를 디버그 할 수 있는지 확인했습니다. VS2010을 설치 한 후 솔루션 폴더의 백업 복사본을 만들었습니다. 그런 다음 솔루션을 열고 코드를 컴파일하고 실행했습니다. 이제 이것이 내가 정말로 이해할 수없는 부분이다. (개발 컴퓨터에서 컴파일 된) 백업 된 복사본에 가서 실행 파일로 이동하여 실행했다. 이제는 잘 돌아갔다. 내가 생각할 수있는 유일한 것은 exe가 작동하도록 코드를 컴파일하여 Nvapi.lib 파일을 시스템 디렉토리에 복사했다는 것입니다. 누구든지이 문제의 원인을 알 수 있으며 Visual Studio를 설치하지 않고 다른 컴퓨터에서 코드 작업을 수행하는 방법을 알고 있습니까?

+1

텍스트에 몇 가지 단락을 사용해보십시오. –

+0

VC++는 관리되는 프로젝트입니까? 다른 컴퓨터에 .NET Framework를 설치 하시겠습니까? – Alexan

+0

.net 프레임 워크가 이미 설치되어 있기 때문에 생각하지 않습니다. –

답변

3

일반적인 실수는 C++ 프로젝트의 Debug 빌드를 다른 컴퓨터로 복사하는 것입니다. msvcr100d.dll과 같은 런타임 DLL의 디버그 버전을 찾을 수 없습니다. 릴리스 빌드 만 배포하십시오.

릴리스 빌드를 배포했지만 여전히 문제가있는 경우 vcredist 설치 프로그램을 실행하지 않은 것 같습니다. 대신에/MT를 사용하여 컴파일하여 C++ 표준 라이브러리 클래스를 사용하지 않는 단일 DLL과 EXE 만 있으면이 종속성을 기술적으로 피할 수 있습니다. SysInternals 'ProcMon을 사용하면 누락 된 종속성에 대해 잘 모를 경우

+1

감사합니다 한스! 언제나처럼 당신은 정확합니다. 내가 릴리스 및 재구성 내 문제가 고정 전환. –