문제

안녕하세요 만드는 방법을 알고 라이브러리(dll)windows visual studio2012with c++ 고 가져오는 파이썬으로 지원하는 완전한 작업

여기에 작은 예제

lib.cpp

#define DLLEXPORT extern "C" __declspec(dllexport)
DLLEXPORT int sum(int a,int b)
{
return (a+b);
}

lib.h

int sum(int,int); 

test.py

from ctypes import *
mydll=cdll.LoadLibrary('lib.dll')
print mydll.sum(2,2)

고 실행 코드와 동일에서 mac xcode4.4 버전 때 나는 벌브 xcode 에서 얻을 전시

__declspec attribute 'dllexport' is not supported

고 가져오기 때 lib.dylib 파이썬에서 나는 오류가 발생

AttributeError: dlsym(0x101afba30, sum): symbol not found

나는 무엇을 잘못입니까?할 수 있는 몇 가지 중 하나 쓰는 간단한 코드를 어떻게 만들 수 있습니다 dylib mac xcode 올바른 가져오려면으로 지원하는 완전에서는 파이썬 2.6.4

는 더 나은 방법을 가져올 libaries 에서는 파이썬에서 두 시스템 mac 및 win?

기본적인 내가 좋아하는 코드를 작성하 windows visual studio2012 을 dll i 다음의 간단한 컴파일러에서 mac 과 엑스 코드 및에서 가져오기 python

도움이 되었습니까?

해결책

귀하의 문제는 이미 dylib 로드 파이썬.다만 재건에 영향을 미치지 않을 것이 무엇이 있로드 메모리입니다.

다만 다른 일 LoadLibrary 지 않을 수도 있습 다시 로드 라이브러리,그리고 방법은 없을 강제로 할 수 있습니다.

방법이 없을 내리고 다시 로드 라이브러리 ctypes.주된 이유는 안전한 방법이 없지만 그렇게 할 모든 플랫폼에—실제로 전에,10.4,OS X 체 이러한 플랫폼입니다.(고 Python 전 현재의 소스 코드에서는 나무 을 지원하는 전 OS X10.4 ctypes.) 하지만 또한,노력하는 것은 안전한 방법으로 모든 플랫폼에서 정확하게 없는 어렵습니다.그래서, ctypes 지 않는다.

당신이 정말로 그것을 할 필요가있다, _ctypes 아래에 모듈 ctypes 일반적으로 수출에 필요한 기능으로 Python.당신이 알고 있는 경우는 이름의 플랫폼으로,당신은 그들을 찾을 수 있습과 help(_ctypes), 거나 보고 원본.

잠시에 가장 현대적인 POSIX 플랫폼(OS X10.5+)의 _ctypes.dlclose(mydll._handle), 하는 동안,on Win32,그것의 _ctypes.FreeLibrary(mydll._handle).어느 경우에,당신이 이제까지 사용 mydll 다시(또는 어떤 기능이나 값들에서 참조하다),당신이 기도해야 하는지에 대한 세그멘테이션.수도 있습니다 세그멘테이션에 종료됩니다.고 윈도우에서,그것은 되지 않을 수 있습니다 실제로는 무료 라이브러리에 요청할 때,그리고 일부 경우에 당신은 라이브러리를 요청하는 경우 그것은 준비가 내리기 전에 그렇게 할 수 있습고 있는 실을 꿰는 복잡성,그리고 잘 읽 FreeLibrary 에서 문서 MSDN,그리고 물론 for ncursesw 에는 와이드 dlclose(3) 에 POSIX 시스템습니다.

일반적으로,그것은 훨씬 더 좋은 아이디어를 시작하는 새로운 통역사 과정을 대신 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top