0

저는 XP PC에서 VC++ 2003을 개발했지만 Windows 7에서 현재 VS 2008의 저렴한 합법적 인 복사본을 구입하여 동일한 프로젝트에서 작업을 계속합니다. 내 제품은 고객의 XP 시스템에서 계속 실행되어야하므로 32 비트 실행 파일에만 관심이 있습니다.VS 2008에서 32 비트 프로그램 컴파일

첫 번째 문제는 PRJ0003 오류 "spawning cl.exe"입니다. 이 파일의 경로를 VC++ 디렉토리 설정에 추가해야했습니다 (bin \ amd64 및 bin \ x86_amd64 디렉토리에 모두 표시되지만, 출력용으로는별로 중요하지 않습니까?).

내가 지금 가지고있는 문제 (strcpy를 strcpy_s 등으로 변환하는 지루한 정리를 포함하지 않음)는 32 비트 또는 64 비트 exe를 생성하는지 여부가 명확하지 않다는 점입니다. 내 프로젝트 속성은 "Win32"의 대상으로 설정되었으므로 모두 정상이라고 가정합니다. 이 올바른지?

나는 이것에 관해 몇 가지 토론을 읽었지만 컴파일러 자체가 x64와 x86을 실행하는지 또는 컴파일 된 코드가 x64와 x86인지 여부와 이것이 차별화되는 방식에 대해 이야기하는 것은 결코 분명하지 않습니다.

그래서 32 비트, Win32, x-86 프로그램을 생성하는 것이 옳은가요?

+1

얼마나 싸게 되었습니까? 다른 사람의 컴퓨터에서 설치 디렉토리를 복사 했습니까? 그것은 확실히 PRJ0003을 설명 할 것입니다. 그리고 당신이 시작할 다음 20 가지의 질문들. –

+0

ATL 서버 구성 요소가 필요할 수 있습니다. VS2008은 그걸로 오지 않았습니다 (분명히 CodePlex로 옮겨졌습니다). 그렇다면 cl.exe에 대해 불평하지 않을까요? [프로젝트 빌드 오류 PRJ0003 - Visual Studio 2008] (http://msdn.microsoft.com/en-us/library/d5cbdh4t%28v=90.aspx) –

+0

휴식 시간을주십시오. 한스. 디스크 엔벨로프 뒷면에 유효한 Microsoft 제품 키가있는 Microsoft DVD의 OEM 배포판이었습니다. 그것은 이전 버전이기 때문에 그것은 단지 싸다 ($ 100). – gordonwd

답변

0

VS2008에서 완전히 엉망인 설치가 없다고 가정 할 때 실수로 32 비트 프로젝트 플랫폼을 사용하여 64 비트 실행 파일을 만드는 것은 매우 어렵습니다. 자신의 이유와 그것은 항상 연결 단계에서 엉망으로 보인다). 그러나 프로젝트가 Makefile을 사용한다면 잘못된 32/64 비트로 끝나는 것이 훨씬 쉽습니다. 특히 명령 행에서 빌드하는 경우 더욱 그렇습니다. 일반적으로 64 비트 프로젝트를 특별히 설정하지 않았다면 모든 것이 32 비트를 구축해야합니다.

컴파일러 경로가 엉망인 것 같아서 VS2008의 복구를 제안한 다음 도구 -> 가져 오기 및 내보내기 설정 -> 모든 설정 재설정을 수행하는 것이 좋습니다. 그런 다음 잘못된 소스 트리를 체크하여 잘못된 빌드 아티팩트가 없는지 확인하십시오.

strcpy_s의 경우 컴파일러가 오류가 아니라 경고를 표시한다는 점에 유의하십시오. 그것에 대해 경고하고 싶지 않다면 단순히 _CRT_SECURE_NO_WARNINGS을 프리 프로세서 매크로로 설정하십시오.

+0

난 그냥 IDE에서 빌드, 그래서 그냥 가서 실행 파일을 확인하십시오. DVD에서 전체 설치를했지만 설치를 다시 확인합니다. 경고에 대해 이해하고 있지만 유용한 새로운 기능을 활용할 수도 있습니다. 나는 CString을 대부분의 장소에서 사용하고 있기 때문에 그다지 많은 것을 가지고 있지 않습니다. – gordonwd

0

bin \ amd64는 AMD64 용 64 비트 컴파일러입니다. bin \ x86_amd64는 AMD64 용 x86 크로스 컴파일러입니다. 32 비트 실행 파일을 원한다면, 습지 표준 컴파일러는 평범한 오래된 저장소에있다. VS2008을 사용한 이래로 꽤 오래되었지만 대상이 Win32라면 64 비트 또는 크로스 컴파일러가 아닌 표준 32 비트 컴파일러를 사용해야한다고 생각합니다.

확인하고 확인하려면 Dependency Walker을 잡고 실행 파일을여십시오. 모듈 트리의 모듈 아이콘에 수직 "64"가 있으면 64 비트 실행 파일을 빌드했습니다. 단순한 모듈 아이콘 만 있다면 32 비트이고 괜찮습니다.

+0

실제로 cl.exe의 유일한 복사본은 bin 하위가 아니라 bin 하위 디렉토리에 있습니다. 그러나 cl.exe는 실제 컴파일러가 아니므로 다른 디렉토리에서 컴파일러 자체를 사용하고있을 수도 있습니다.나는 VS의 구조에 익숙하지 않은데, 그 이유는 이전에 항상 "잘 작동"했기 때문입니다. – gordonwd

+0

@ gordonwd : 잠시 동안 VS2008을 사용하지는 않았지만 여전히 데스크톱에 설치했습니다. 그리고 컴파일러 툴체인은 실제로 bin \ 자체에 있습니다. 2005 년과 2010 년과 동일합니다. Screeny : http://i.imgur.com/91Fmi.png cl.exe 자체에 관해서는 컴파일러가 아니지만 프론트 엔드입니다 (gcc가 실제 GCC 컴파일러에 대한 프론트 엔드). c1 * .dll 및 c2.dll은 실제 컴파일러 구성 요소이며 cl.exe와 동일한 디렉토리를 공유합니다. bin 디렉토리에이 모든 것을 가지고 있지 않으면 VS2008의 복사본이 생각만큼 합법적이지 않을 수 있습니다. –

관련 문제