私は、次のcppとhファイルで構成されるC++ライブラリを持っています。私は、cortex.cppの関数をPython(3.5)に公開したいと考えています。PythonへのSwig C++:.cppと.hファイルをまとめてコンパイルする
cortex.h
cortex_socket.h
cortex_intern.h
m3x3.h
cortex_unpack.h
m3x3.cpp
cortex_unpack.cpp
cortex.cpp
cortex_socket.cpp
私は、次のcortex.iファイルがぶ飲み作成:
swig -python -Isrc cortex.i
g++ -Isrc -fPIC -I/usr/include/python3.5 -c cortex.cpp cortex_wrap.c
g++ -shared -fPIC -o _cortex.so cortex.o cortex_wrap.o
これらのコマンドはエラーを返しません。
%module cortex
%{
#include "cortex.h"
#include "m3x3.h"
#include "cortex_intern.h"
#include "cortex_socket.h"
#include "cortex_unpack.h"
#include "stdbool.h"
%}
%include "cortex.h"
次へ]を、私はモジュールをコンパイルするには、次のように使用します。 pythonで結果モジュールを使用しようとしたときただし、エラーがポップアップ表示されます:
>>> import cortex
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "cortex.py", line 28, in <module>
_cortex = swig_import_helper()
File "cortex.py", line 24, in swig_import_helper
_mod = imp.load_module('_cortex', fp, pathname, description)
ImportError: ./_cortex.so: undefined symbol: _Z13GetHostByAddrPhPc
>>>
私は、このエラーに関連するこのフォーラムで他のいくつかの質問/回答を発見しました。しかし、swig anc C++に精通していないので、これらを自分の状況、コード、コマンドに変換することは難しいです。言い換えれば、これらの他の投稿を読んだ後でも、私はまだ失われています。
私は、上記のコードスニペットをウェブ上のさまざまなソースから収集しました。したがって、私がこれらのコード行が何をしているのか説明してくれれば感謝しています(解決策を見つけるのに役立つかもしれません)。
いずれにしても、いくつかの助けが素晴らしいでしょう。
OK、悪いです。編集:いくつかの末尾の単語を削除しました。 – DonDavey
おそらく共有ライブラリを別のものとリンクする必要があります。 – Flexo
私は分かりません。 GetHostByAddrは、私のライブラリ内のヘッダファイルの1つで定義されています。これはcortex_socketファイルにあります。 – DonDavey