파이썬에서 호출하기를 원하는 C++ 함수가 있습니다. 함수 자체는 매우 단순하지만 C++에서만 수행 할 수있는 IPC 호출을 포함합니다. 컴파일하려면 C++ 코드가 다른 라이브러리를 연결해야합니다. SWIG를 사용하려고합니다. 모든 것이 잘 컴파일이와SWIG 래퍼를 다른 라이브러리와 연결하기
all: swig object shared
object: swig
${CC} -c ${MODULE}_wrap.cxx ${INCLUDES}
shared:
${CC} -Wl,--verbose -shared ${MODULE}_wrap.o -o _${MODULE}.so
swig:
${SWIG} -c++ -python ${MODULE}.i
,하지만 파이썬에서 내 모듈을 가져 오는 것은 나 "정의되지 않은 기호"오류를 제공합니다 : I는 다음과 같습니다 Makefile을 가지고있다. 나는 shared
라인을 변경하는 경우 :
shared:
${CC} -Wl,--verbose -shared ${MODULE}_wrap.o -o _${MODULE}.so ${LIBS}
이 collect2: ld returned 1 exit status
와 함께 컴파일에 실패했지만 오류가 정확히 말해주지 않습니다. 장황한 링커 출력에는 "일부 lib를 열려고 시도하지 못했습니다"라는 줄이 있지만 그 중 소수는 "성공"이라고 말합니다. 실패했다고 말하는 사람들이 링크가 일어나는 것을 막을 수 있습니까? SWIG 모듈을 사용해도 가능한 일을하려고합니까?
단지 객체 파일이기 때문에 SWIG 생성 라이브러리에서'ldd'를 수행 할 수 없습니다. 그러나 나는 이것을 어떻게해서든지 시도했다. '-rpath ='는 작동하지 않지만'-Xlinker -rpath -Xlinker [path]'를 시도했습니다. 나는 또한 LD_LIBRARY_PATH를 시도했다. 아직 정의되지 않은 기호 오류가 발생합니다. 나는 명백한 무엇인가 놓치고있는 것처럼 느낀다. – sagargp