2012-01-24 2 views
2

나는 ctypes에 관한 정말 이상한 문제를 겪고있다. C 인터페이스가있는 C++ 라이브러리에 인터페이스하기 위해 ctypes를 사용하고 있습니다. 라이브러리에는 많은 병렬 기능이 있습니다. 흔히 병렬 호출은 C++ 계층의 세그 폴트로 끝나는 경향이 있지만 직렬 코드를 사용하여 실행했습니다. 파이썬 인터프리터와 C++ 코드가 같은 버전의 C++ 컴파일러로 컴파일되어야하는지에 대한 제한이 있는지 궁금합니다. 그렇다면 파이썬을 빌드하는 데 C++이 어떻게 사용되었는지 어떻게 알 수 있습니까? 파이썬에서 gcc와 g ++ 용 문자열을 실행하려고 시도했지만 아무 것도 나타나지 않습니다.ctypes - 파이썬을 C 라이브러리와 동일한 버전으로 컴파일해야합니까?

+1

나는 비슷한 문제가 없었습니다. 파이썬을 빌드하는 데 사용 된 컴파일러를 찾는 방법은 ['sys.version'] (http://docs.python.org/library/sys.html#sys.version)에서 ['platform.python_compiler())'] (http://docs.python.org/library/platform.html#platform.python_compiler) 또는 단순히'python'을 실행하십시오. –

답변

4

ctypes로 호출하는 네이티브 라이브러리는 일치하는 런타임으로 빌드해야한다는 요구 사항이 없습니다. 실제로 네이티브 라이브러리가 C 런타임을 사용한다는 요구조차 필요하지 않습니다.

예를 들어 ctypes를 사용하여 다른 언어로 작성된 코드를 호출 할 수 있습니다 (예 : 델파이. 또는 ctypes를 사용하여 MSVC에 링크되지 않은 Windows API 함수를 호출 할 수 있습니다.

문제를 해결하려면 다른 곳을 봐야 할 것입니다.

+0

좋아, 내가 너를 믿어야 할 것 같아. 감사! – rokuingh

+0

완전히 다른 런타임에 링크되는 mingw를 사용하여 DLL을 빌드하면 쉽게 테스트 할 수 있습니다. –

0

CPython에는 C++ 코드가 포함되어 있지 않으므로 CPython 프로세스에로드 된 C++ 라이브러리를 컴파일하는 데 사용되는 C++ 컴파일러와 관련된 요구 사항은 없습니다. 그러나 C 계층과 C++ 라이브러리는 일반적으로 동일한 C++ 컴파일러로 컴파일해야합니다. 그리고 C++ 라이브러리 나 C 계층이 libpython과 연결되어 있다면, 나중에 라이브러리를로드하는 ctypes 코드를 실행하는 데 사용되는 CPython과 동일한 버전으로 컴파일해야합니다.

관련 문제