2017-12-06 38 views
2

최근 Visual Stuido 2015에서 얼굴 인식 응용 프로그램을 작업했습니다. 응용 프로그램에 cuda 라이브러리를 적용하려면이 응용 프로그램을 win32 유형에서 x64로 마이그레이션해야합니다. 필자는 구성 관리자를 신중하게 변경하고 모든 extern dll 또는 lib에 x64 버전이 있는지 확인하기 위해 x86과 관련된 모든 것을 검토합니다.x64 응용 프로그램을 x64 응용 프로그램으로 마이그레이션하려면 어떻게해야합니까?

릴리스 모드에서 컴파일 한 후에는 항상 "LNK1112 모듈 컴퓨터 유형 'x86'이 (가) 대상 컴퓨터 유형 'x64'과 (와) 충돌합니다. 에러 파일은 DirectShow에 의해 작성된 CameraDS.obj입니다. 그리고 dumpbin/headers를 사용하여 .obj 파일을 생성했는지 확인한 다음 모든 .obj의 헤더 파일 값이 machine (x86)인지 확인했습니다. 이러한 .obj 파일을 삭제하거나 솔루션을 삭제해도 작동하지 않으며 IDE에서 동일한 오류 메시지를 throw합니다. 왜 그런지 모르겠다.

해결책이 있습니까?

+2

당신이 "CameraDS.obj는 DirectShow를 작성한는"무엇을 의미합니까의 답변을보고 어디서든 86을 남겨하지 않았는지 확인? 그것은 외부 obj 다음 어쩌면 당신은 그것의 64 비트 버전을 링크 해야하는 경우? – VTT

+0

CameraDS.obj를 컴파일 할 때 directshow가 CameraDS 클래스를 작성한다는 의미입니다. –

답변

1

lib의 출처입니까 CameraDS.obj? https://github.com/souseiki/Stereo-Vision

x64에서도 마찬가지로 다시 컴파일하십시오.

또한, fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

+0

예, 그렇습니다. 그러나 CameraDS 클래스에서 x86 .obj를 생성 한 것뿐만 아니라 다른 .obj 파일을 정리하더라도 다른 클래스에도 동일한 변경 사항이 있음을 발견했습니다. 질문하기 전에 그 질문에서 하나씩 잘못을 점검했습니다. x64 프로젝트를 다시 작성하고 모든 코드와 문제를 복사했지만 여전히 이유를 알고 싶습니다. –

+0

아직 프로젝트 파일에 오류가있는 경우 .vcxproj 파일을 텍스트로 열어서 x64를 찾으려면 어딘가에 있어야합니다. –

+0

프로젝트의 이름을 따서 명명 한 파일에서 .vcxproj 파일을 의미합니까? x86과 x64 버전 모두에서 공유됩니까? 나는 그것을 열고 win32와 x64로 많은 내용을 찾는다. 그리고 새 프로젝트에서 x64를 x86으로 마이그레이션하려고하면 컴파일러에서 .obj 파일을 생성 할 때 훨씬 더 많은 오류 메시지가 나타납니다. –