0
동적 및 정적 라이브러리로 컴파일 된 C++ 라이브러리가 있습니다. 최근에 리소스 버전 파일을 소스에 추가합니다. 동적 라이브러리 편집은 잘 작동하지만 정적 라이브러리 컴파일은 다음과 같은 오류와 함께 64 비트 대상에 대한 실패 시작 : 다음msbuild - 프로젝트에 리소스 파일을 추가 한 후에 정적 lib 컴파일이 실패했습니다.
LINK : warning LNK4068: /MACHINE not specified; defaulting to X86
x64\Release\dllmain.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
내 컴파일 스크립트입니다
이@ECHO OFF
call "%VS140COMNTOOLS%"\\vsvars32.bat
SET SourceDir=D:\Projects\MySampleLib
SET TargetDir=D:\Projects\Packages
ECHO 32 bit MySampleLib .LIB compilation VS2010
msbuild.exe %SourceDir%\MySampleLib\MySampleLib.vcxproj /t:Clean;Rebuild /p:Configuration=Release;Platform=Win32;ConfigurationType=StaticLibrary;PlatformToolset=v100
ECHO 64 bit MySampleLib .LIB compilation VS2010
msbuild.exe %SourceDir%\MySampleLib\MySampleLib.vcxproj /t:Clean;Rebuild /p:Configuration=Release;Platform=x64;ConfigurationType=StaticLibrary;PlatformToolset=Windows7.1SDK
오류 때 발생 Lib.exe 명령이 MySampleLib.res
참고 : 오류는 리소스 파일을 추가 한 후에 만 나타납니다. I 은 리소스 파일을 정적 라이브러리에 추가하지 않으려합니다.
정적 라이브러리에 리소스를 추가 할 수 없습니다. 또한 정적 라이브러리가 링크되지 않기 때문에 (최종 실행 파일이 빌드 될 때 연결됩니다.) 정적 라이브러리에 대한 링커를 호출하기 위해 수행 한 작업이 문제의 시작입니다. __Lib.exe__ 명령은 링커가 아닌 라이브러리 관리자입니다. –
@RichardCritten 리소스 파일을 정적 라이브러리에 추가하고 싶지 않습니다. 동적 버전에만 추가했습니다. 내 컴파일 스크립트에서 나는 아무 것도하지 않았다. –
이것이 리소스와 관련이 있다는 것이 확실합니까? 64 비트 오브젝트 파일 (따라서 * 모듈 시스템 유형 'x64'* 언급)을 컴파일 중이지만/MACHINE : x64를 링커에 전달하지 않으므로 (따라서 */MACHINE이 지정되지 않고 기본값으로 설정됩니다. ~ X86 *) 그래서 32 비트 오브젝트 파일을 연결하려고합니다. 64 비트 오브젝트 파일이 주어지기 때문에 작동하지 않습니다. – stijn