16. 32bit, 64bit

반응형

1. size_t 관련 문제

int n = _tcslen(szStr);.

warning C4267: '초기화 중' : 'size_t'에서 'int'(으)로 변환하면서 데이터가 손실될 수 있습니다.

_tcslen 이 반환하는 값이 size_t이다.

왜 int를 반환하지 않고 size_t를 반환하는 걸까?

size_t의 내부를 보면 아래와 같이 되어 있다.


#ifndef _SIZE_T_DEFINED

#ifdef  _WIN64

typedef unsigned __int64    size_t;

#else

typedef _W64 unsigned int   size_t;

#endif

#define _SIZE_T_DEFINED

#endif

즉, 64비트는 8byte의 크기를 가지며 32비트에서는 4byte를 가진다.


2. 프로젝트 속성 설정

링커 - 고급 - 대상컴퓨터를 적절하게 고친다.

c/c++ - 전처리기 에 WIN32, WIN64를 적절하게 추가한다.


3. fatal error LNK1112

fatal error LNK1112: 'X86' 모듈 컴퓨터 종류가 'x64' 대상 컴퓨터 종류와 충돌합니다.

분명 링크-고급 옵션에서 대상컴퓨터를 수정했는데도 위와 같은 에러가 난다.

core 라이브러리를 땡겨쓰는데 이 core 라이브러리를 64로 설정해서 다시 빌드했지만 이를

땡겨쓰는 플젝에서는 위와같은 에러가 남.

자세히 보니 core 라이브러리의 64비트 설정 만들때 32비트에서 설정 가져옴을 사용했는데

제대로 못가져와서 라이브러리를 제대로 못만들었고. 그러다 보니 기존 32비트 라이브러리가 

안지워지고 그대로 남아있는걸 다른 플젝에서 가져다 쓰다보니 나는 문제였음.

확실히...32비트 아웃풋이랑 64비트 아웃풋을 분리해야 보기 편할듯.


Reference Link

msdn _int8, _int16, _int32, _int64

msdn 일반적인 Visual C++ 64비트 마이그레이션 문제

-

'작업장 > Mgin 제작' 카테고리의 다른 글

18. dx를 자체 라이브러리로.  (0) 2017.12.03
17. svn.  (0) 2017.12.01
15. archive  (0) 2017.11.27
14. character  (0) 2017.11.27
13. max plugin  (0) 2017.11.20
TAGS.

Comments