2014-06-11 2 views
0

현재 ImageJ에 통합하기 위해 Python으로 Matlab 프로그램을 가져 오기위한 프로젝트를 진행 중입니다. 이 프로그램은 Mex 파일을 포함하고 소스 코드는 C++로 작성되었습니다. 파이썬에서 다시 작성할 필요없이 C++ 함수를 호출 할 수있는 방법이 있습니까? 감사!!!Python에서 C/C++ 코드를 호출하십시오.

+0

정확히 어떻게 C 함수를 호출 하시겠습니까? 어떤 기능이 될까요? 파이썬 함수로서 사용할 수 있습니까? – Schorsch

+1

@ThePathan : Python에서 직접 MEX 함수를 호출 할 수는 없습니다. MATLAB을 사용하지 않는 한 불가능한 것처럼 보이는 모든 MATLAB MEX API 함수를 구현해야합니다. – nneonneo

+0

... 자세한 내용은 [이 질문] (http://stackoverflow.com/questions/6848790/embed-a-function-from-a-matlab-mex-file-directly-in-python)을 참조하십시오. – nneonneo

답변

1

프로그램을 공유 라이브러리로 빌드 할 수있는 경우 ctypes 외부 기능 인터페이스를 사용하여 함수를 호출 할 수 있습니다.

이것은 종종 Cython으로 함수를 래핑하거나 자신의 C-API 확장을 작성하는 것보다 덜 복잡하고 덜 복잡합니다.하지만 할 수있는 일이 더 제한됩니다. 따라서 ctypes으로 시작하고 ctypes이 필요에 맞지 않는다면 Cython으로 이동하는 것이 좋습니다.

그러나 단순한 라이브러리의 경우 ctypes은 아주 잘 할 것입니다 (저는 많이 사용합니다).

+0

답장을 보내 주셔서 감사합니다 !!! 주변을 검색하면 ctypes가 시작하는 가장 쉬운 방법 인 것 같습니다. 또한 ImageJ 환경에서 ** ctypes **를 가져올 수 있습니다.이 프로젝트는 내 프로젝트에서 중요합니다 (프로젝트는 Matlab 프로그램을 imageJ 플러그인으로 변환하는 것입니다). 그러나 필자는 공유 라이브러리로서 어떤 것을 만들지 않았습니다. 너무 복잡해지면 도움을 요청할 수도 있습니다. 그러나 도움에 감사드립니다. 매우 감사드립니다. – Haider

+0

@ThePathan : 왼쪽에 ** ✓ **를 표시하여 원하는 답변을 선택하는 것을 잊지 마십시오. –

1

스택 오버 플로우에 오신 것을 환영합니다!

Python C-API을 통해 파이썬 C 확장자로 파이썬에서 호출 할 수 있도록 C 함수를 래핑해야합니다. 그러나, 나는 당신이 무엇을하고 있는지를 모르는 경우 업무가 골치 거리가 될 수 있음을 경험을 통해 알 수 있습니다.

나는 cython을 체크 아웃하는 것이 좋습니다. 그것은 파이썬 코드를 작성하는 것처럼 쉽게 C 확장을 작성합니다!

관련 문제