2014-07-26 2 views
1

Python documentation에 따르면 Windows에서 Python 확장을 컴파일 할 때 "Python 자체를 빌드하는 데 사용 된 동일한 버전의 VC++를 사용해야합니다." 일반적으로 주어진 설명은 VC 런타임 버전의 불일치로 인해 문제가 발생한다는 것입니다. 그러나 더 잘 작동하는 새로운 Visual Studio 버전을 사용하여 확장을 컴파일 할 수 있습니다.다른 Visual Studio 버전의 Python 확장판 컴파일

다른 런타임이 문제를 일으키는 경우는 무엇입니까? 이 주제에서 본 대부분의 정보는 python-dev 메일 링리스트의 this thread입니다. 문제가있는 동작으로 이어지는 사용 사례가 (잘하면 작은) 집합입니까? 아니면 문제가 발생하지 않았는가?

답변

1

그 메일 링 스레드는 C 런타임 불일치로 인해 문제가 발생하는 가장 포괄적 인 목록입니다. 일반적인 문제는 각각의 런타임이 다른 런타임과 아무 것도 공유하지 않으며, 각 런타임은 자체적 인 별도의 상태를 가지며 외부에서 노출하는 모든 것은 런타임시 자신의 코드로 공유 될 수 없다는 것입니다. 이전의 문제는 각 런타임에 자체적으로 errno이 있고 두 번째로는 FILE *' 개체를 하나의 런타임으로 열고 다른 하나는 파일 I/O 기능을 사용할 수 없다는 것을 의미합니다.

모든 가능한 문제점을 열거하면 런타임의 전체 가시 상태 (간접적으로 보이는 상태 포함)를 열거하고 생성 및 수신 할 수있는 모든 값을 열거하여 호환되지 않을 수 있습니다.

약간 오프셋이 Microsoft's promise이면 Microsoft C/C++ 컴파일러의 한 버전으로 컴파일 된 개체 파일 (.OBJ)은 이후 버전의 컴파일러와 호환되어야합니다. 예를 들어, 두 개의 다른 런타임은 errno (예 : ENOENT이 항상 2 임)에 완전히 다른 값 집합을 사용하지 않을 것입니다. 이러한 값은 객체 파일에 상수로 표시되기 때문입니다.

관련 문제