2016-06-13 6 views
0

x64 파이썬 C 라이브러리 확장을 x86에서 빌드하고 있습니다.MinGW64에서 fopen64가있는 fread가 프로세스를 죽입니다.

내가 fopen64에 의해에 opend 파일 포인터 fread을 발견 오류 때문에 ntdll.dllAPPCRASH의 파이썬 프로세스를 죽였다. x86 빌드에서는 발생하지 않으며 파일 포인터가 fopen으로 열리는 경우도 발생하지 않습니다.

먼저 Windows 버그로 인해 here이 발생했다고 생각했습니다. 그러나 그것을 고치지는 않았습니다.

이 문제를 방지하는 데 유용한 방법이 있습니까? 나는 마녀 파일 열기 기능을 선택하는 것은 x64와 x86 모두에서 작동 할 수 있도록하기 위해 사용되는 것으로 정의하고 있지만 그렇게하기에는 놀라운 아이디어가 없습니다.

내 환경

  • 윈도우 7 64
  • 파이썬 2.7.10 64
  • NumPy와 1.11.0
  • MinGW64
+0

는 [fopen64가 단지 래퍼 어쨌든 fopen의]처럼 보인다 (https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-crt/stdio/fopen64.c). 따라서 fopen을 사용해야합니다. –

+0

그래, 이미 include 파일을 확인 했어. 그러나 오류는'fopen64'에서 발생했으나'fopen'에서는 발생하지 않았습니다. –

+0

실제 문제는 다른 곳, 메모리 손상 또는 이와 유사한 것일 수 있습니다. 그러나 요지는 내가 말할 수있는 한, fopen64를 사용하는 것은 정확히 아무것도 달성하지 못한다는 것이다. 그래서 fopen을 사용하지 않는 이유는 무엇인가? –

답변

0

지금은, 나는 아래의 코드를 사용하고 있습니다 .

#if defined(_WIN64) 
#define _fopen fopen 
#else 
#define _fopen fopen64 
#endif