検索

ホームページ  >  に質問  >  本文

C 言語で書かれた Python モジュールをロードすると、.so 内の関数が見つからないというメッセージが表示されます。

C 言語で Python モジュールを作成しようとしていますが、C プログラム自体がサードパーティのライブラリ (libwiringPi.so) に依存しているため、Python ソース プログラムで生成したライブラリをインポートすると、プロンプトが表示されます。関数は未定義です。これらの関数はすべて、そのサードパーティ ライブラリに含まれています。コンパイルしたモジュールがそのライブラリに動的にリンクできるようにするには、どのようにコンパイルすればよいですか?

また、gcc を使用してダイナミック リンク ライブラリを手動でコンパイルし、その後 ctyes を使用しようとしましたが、同じエラーが報告されました。生成されたモジュールの C コードと setup.py コードは両方とも、 Pythonのソースパッケージ。

私のCプログラムコード

リーリー

setup.py

リーリー ######エラーメッセージ###### リーリー
怪我咯怪我咯2742日前608

全員に返信(1)返信します

  • ringa_lee

    ringa_lee2017-05-18 11:02:29

    ねぇ、朝起きてふと思い立ったので、早速やってみました。

    この問題は、コンパイル時に-lwiringPi 选项来引用这个库,但是我仔细看了以下执行 python setup.py build 之后执行的编译命令,根本就没有加这个选项,解决方式很简单,只需要修改一下setup.py,在Extension里面加上 libraries = ['wiringPi']このパラメータを追加する必要があるために発生します。変更されたsetup.pyは次のようになります

    。 リーリー

    返事
    0
  • キャンセル返事