나는 ctypes에 관한 정말 이상한 문제를 겪고있다. C 인터페이스가있는 C++ 라이브러리에 인터페이스하기 위해 ctypes를 사용하고 있습니다. 라이브러리에는 많은 병렬 기능이 있습니다. 흔히 병렬 호출은 C++ 계층의 세그 폴트로 끝나는 경향이 있지만 직렬 코드를 사용하여 실행했습니다. 파이썬 인터프리터와 C++ 코드가 같은 버전의 C++ 컴파일러로 컴파일되어야하는지에 대한 제한이 있는지 궁금합니다. 그렇다면 파이썬을 빌드하는 데 C++이 어떻게 사용되었는지 어떻게 알 수 있습니까? 파이썬에서 gcc와 g ++ 용 문자열을 실행하려고 시도했지만 아무 것도 나타나지 않습니다.ctypes - 파이썬을 C 라이브러리와 동일한 버전으로 컴파일해야합니까?
답변
ctypes로 호출하는 네이티브 라이브러리는 일치하는 런타임으로 빌드해야한다는 요구 사항이 없습니다. 실제로 네이티브 라이브러리가 C 런타임을 사용한다는 요구조차 필요하지 않습니다.
예를 들어 ctypes를 사용하여 다른 언어로 작성된 코드를 호출 할 수 있습니다 (예 : 델파이. 또는 ctypes를 사용하여 MSVC에 링크되지 않은 Windows API 함수를 호출 할 수 있습니다.
문제를 해결하려면 다른 곳을 봐야 할 것입니다.
좋아, 내가 너를 믿어야 할 것 같아. 감사! – rokuingh
완전히 다른 런타임에 링크되는 mingw를 사용하여 DLL을 빌드하면 쉽게 테스트 할 수 있습니다. –
CPython에는 C++ 코드가 포함되어 있지 않으므로 CPython 프로세스에로드 된 C++ 라이브러리를 컴파일하는 데 사용되는 C++ 컴파일러와 관련된 요구 사항은 없습니다. 그러나 C 계층과 C++ 라이브러리는 일반적으로 동일한 C++ 컴파일러로 컴파일해야합니다. 그리고 C++ 라이브러리 나 C 계층이 libpython과 연결되어 있다면, 나중에 라이브러리를로드하는 ctypes 코드를 실행하는 데 사용되는 CPython과 동일한 버전으로 컴파일해야합니다.
- 1. ctypes 대 C 확장자
- 2. JBoss - JBoss가 실행중인 것과 동일한 JDK에서 컴파일해야합니까?
- 3. Return to CTypes pointer from C
- 4. C/C++ 라이브러리와 Python의 인터페이스
- 5. 라이브러리와 c 및 C++ 연결
- 6. 종속성이있는 c 공유 라이브러리를로드하는 ctypes
- 7. 어떻게 파이썬을 특정 버전으로 업그레이드 할 수 있습니까?
- 8. 왜/optimize 스위치를 사용하여 C# 코드를 컴파일해야합니까?
- 9. C# 라이브러리와 함께 ".exe"생성
- 10. C# 연결된 라이브러리와 DLL 유지
- 11. 파이썬을 C++에 임베드
- 12. C 표준 라이브러리와 C POSIX 라이브러리의 차이점
- 13. 자바가 다른 JDK 버전으로 빌드 : 동일한 아티팩트?
- 14. Silverlight를 C++ 정적 라이브러리와 연결할 수 있습니까?
- 15. ctypes 포인터가 가리키는 메모리 주소를 가져옵니다.
- 16. Ctypes 정의
- 17. JBoss AS를 전개하는 동일한 JVM에서 ejb jar를 컴파일해야합니까?
- 18. C++ DLL의 ctypes 호출을 디버깅하는 방법은 무엇입니까?
- 19. 시간 초과가있는 C 함수 호출 - ctypes
- 20. ctypes/C++ segfault 액세스 멤버 변수
- 21. 파이썬 + ctypes, segfault로 C++ 동적 배열 래핑
- 22. ctypes 버퍼 수정
- 23. .NET에서 정적 라이브러리와 동일합니까?
- 24. 파이썬 ctypes 배열
- 25. 파이썬하는 ctypes : 초기화 c_char_p는()
- 26. ctypes python std :: string
- 27. 이하는 ctypes 잡기 예외
- 28. 어떻게 JSP를 다시 컴파일해야합니까?
- 29. web.config 변경 후 컴파일해야합니까?
- 30. PHP 파일을 컴파일해야합니까?
나는 비슷한 문제가 없었습니다. 파이썬을 빌드하는 데 사용 된 컴파일러를 찾는 방법은 ['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'을 실행하십시오. –