1

Python から呼び出したい C++ 関数があります。関数自体は非常に単純ですが、C++ でのみ実行できる IPC 呼び出しが含まれます。その C++ コードをコンパイルするには、他の多くのライブラリをリンクする必要があります。私はこれに SWIG を使用しようとしています。次のような Makefile があります。

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

これにより、すべてが正常にコンパイルされますが、モジュールを Python にインポートすると、「未定義のシンボル」エラーが発生します。行を次のように変更するsharedと:

shared:
  ${CC} -Wl,--verbose -shared ${MODULE}_wrap.o -o _${MODULE}.so ${LIBS}

コンパイルに失敗しますがcollect2: ld returned 1 exit status、エラーの正確な内容はわかりません。詳細リンカー出力には、「[一部のライブラリ] を開く試みに失敗しました」という行が大量に含まれていますが、それらの行のいくつかは「成功しました」と表示されています。失敗したと言っている人がリンクの発生を妨げているだけでしょうか? 私がやろうとしていることは、SWIG モジュールでも可能ですか?

4

2 に答える 2