2010-01-15 3 views
1

저는 x86 용 라이브러리 (poco-1.3.6p2-all, 그게 무슨 가치가 있는지)를 만들고 싶습니다. 방금 새 (깨끗한) Windows 7 64 비트 컴퓨터를 설치하고 Visual Studio 2008 Standard를 설치했습니다. 이 상자에 지금까지 설치 한 것은 설치 오류입니다.x64 (Visual Studio 2008) 환경에서 x86 코드 빌드?

동일한 라이브러리가 VS 2008 Standard가 설치된 Windows XP 32 비트 시스템에 완벽하게 구축되었습니다. 오, 예, 관리되지 않는 C++입니다.

내가 얻는 오류는 프로젝트의 개별 DLL 링크마다 있습니다. 예 :

1>.\obj\debug_shared\CppUnitException1.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86' 

해당 라이브러리는 .cmd 파일 빌드 스크립트에서 호출 한 .vcproj 파일로 작성됩니다. 링커가 86를 보는 것을

/OUT:"..\bin\CppUnitd.dll" /INCREMENTAL /NOLOGO /DLL /MANIFEST /MANIFESTFILE:".\obj\debug_shared\CppUnitd.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"..\bin\CppUnitd.pdb" /DYNAMICBASE /NXCOMPAT /IMPLIB:"..\lib\CppUnitd.lib" /MACHINE:X86 /ERRORREPORT:PROMPT 

그것은 (나에게) 나타납니다

/Od /I "include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "CppUnit_EXPORTS" /D "_CRT_SECURE_NO_DEPRECATE" /D "_VC80_UPGRADE=0x0710" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /GF /FD /EHsc /RTC1 /MDd /Fo".\obj\debug_shared/" /Fd".\obj\debug_shared/vc80.pdb" /W3 /nologo /c /ZI /errorReport:prompt 

프로젝트 옵션의 링커 명령 줄은 다음과 같습니다처럼

컴파일러 옵션 (명령 줄) 볼 개체 파일이지만 명령 줄 옵션이 올바른 경우에도 x64 모드에서 호출됩니다.

타겟이 x64가 아닌 32 비트/x86 유형이어야합니다.

이 문제를 해결할 수있는 Visual Studio 옵션이 있습니까?

답변

1

VS에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동하십시오. 빌드 탭을 찾아 "플랫폼 대상"이 "x86"으로 설정되어 있는지 확인하십시오.

+0

어디서? 탭이나 빌드라는 섹션이 보이지 않습니다. 속성 | 링커 | 고급 옵션 인 대상 머신이 MachineX86으로 설정됩니다. –

+0

아마도 C#보다 C++ 솔루션의 속성이 다를 것입니다. 다른 것들은 사용할 수 있습니까? –

+0

링커 옵션의 경우 관련 옵션 중 유일하게 나타납니다. –

0

나는이 질문을 자야한다고 생각합니다. 필자는 시스템 변수 (경로 변수와 같은)에서 몇 가지를 들여다 보았고, 후속 빌드가 IE에 제대로 돌아갔습니다. DLL에 제대로 연결된 32 비트 OBJ 파일을 사용했습니다.

빌드에 영향을 준 변경 내용이 확실하지 않습니다.

"깨끗한"전체 빌드가 작동하지만 정확히 무엇이 변경되었는지 알 수 없습니다. 내 시스템 (하드웨어 포함)을 처음부터 다시 작성하고 모든 것을 재설치 한 후에 나는 엉망이되었다. 그래서 아마도 (빌드 전에 "vsvars32"호출과 같은) 명백하고 어리석은 것을 생략하고 make 파일이 바람직하지 않은 기본값으로 나를 수용하고있었습니다.

0

나는 이전에 대답하고 싶었지만 기회를 얻지 못했습니다. 그래서 Visual Studio 설치시 문제가 발생했습니다. 어떻게 든 설치가 x86 용 컴파일러와 관련 dll을 설치하지 않았습니다. 일단 다시 설치하면 효과가있었습니다. 또한 올바른 컴파일러는 크로스 컴파일러가 아닌 x86이 될 것입니다.

0

해결책이 있지만 문제가 해결되지 않을 수도 있습니다.

지금 같은 문제를 해결하기 위해 내 방식대로 내가 그것을했다

(in Visual Studio) Project -> Properties -> C/C++ -> Optimization -> Inline Function Expansion = Default 

을하고 내 문제를 해결했다.

관련 문제