問題タブ [swig]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python + SWIG +MinGW-setup.pyはソースとpydファイルをビルドします。pythonは「モジュールが見つかりません」
私はMinGWを使用して、Swigを使用してPythonCモジュールを構築しています。Pythonにモジュールをロードするように指示すると、失敗し、Pythonがモジュールを見つけられないと文句を言います。
面白いことに、モジュールはPythonを実行しているのと同じディレクトリにあり、モジュールの名前は_mod.pyd
です。(同じパスmod.py
で使用するファイルも生成しました。)_mod.pyd
信じられないほどイライラします!
それはきれいに構築され(私はdistutilsを使用しています)、すべてのdllはPATHに公開されているディレクトリにあります。
私はWindowsXP+ MinGWプラットフォーム(最新の安定したMinGW)を使用しています。
ありがとう!
c++ - UTF-8 エンコーディング エラーです。テキストの変換に助けが必要です
私は、C++ バックエンド ( http://www.statmt.org/moses/?n=Development.GetStarted ) と Pythonを使用するハイチ (code.google.com/p/ccmts) の統計翻訳システムに取り組んできました。 C++ エンジン/バックエンドを駆動します。
UTF-8 Python 文字列を C++ に渡し、std::string
いくつかの処理を行い、結果を Python に戻しました。これが文字列です (C++ から Linux ターミナルに出力した場合):
mwen bezwen ã ¨ d medikal
- それは何のエンコーディングですか?二重にエンコードされた文字列ですか?
- レンダリング可能になるように「修正」するにはどうすればよいですか?
- フォントか何かが足りないので、そのように印刷されていますか?
Python chardetライブラリには次のように書かれています。
しかし、Python では、文字列/ユニコード/コーデックのデコードを実行すると、古いものが表示されます:
UnicodeDecodeError: 'ascii' コーデックは位置 30 のバイト 0xc3 をデコードできません: 序数が範囲外です (128)
ああ、Python はまったく同じ文字列を標準出力に出力します。
呼び出しはrepr()
次を出力します: ' mwen bezwen \xc3\xa3 \xc2\xa8 d medikal '
c++ - Ruby、C++、Swig の一部のクラスがエクスポートされない
私は自分のライブラリ c++ Lavish を swig を使って ruby で動作させることに取り組んできました。問題は、インターフェイス ファイルに含めたクラスの一部しか使用できず、バンドルのコンパイル中または ruby への読み込み中にエラーが発生しないことです。私のswigインターフェースファイルはここで見ることができます.
何が機能し、何が機能しないかの例。
C++ で Display オブジェクトを作成でき、swig インターフェース ファイルにヘッダーを含めたので、どこで何が問題なのかわかりません。
何か案は?
python - Python での void ポインターへのアクセス (SWIG などを使用)
SWIG を使用して、ioctl() を使用して次のような構造を設定する単純なライブラリをラップしようとしています。
dataはバッファへのポインタで、lenはそのバッファの長さです。
データを Python 文字列 (または配列)に変換する方法がわかりません。さらに、デストラクタでそのバッファを解放する方法が必要です。任意の提案をいただければ幸いです。
perl - ビルド済みのperlモジュールをどのように配布する必要がありますか?また、どのバージョンのperl用にビルドしますか?
これはおそらく複数の部分からなる質問です。背景:アプリケーションの一部であるネイティブ(c ++)ライブラリがあり、SWIGを使用してこのライブラリのperlラッパーを生成することができました。このperlモジュールをアプリケーションの一部として配布したいと思います。
私の最初の質問-このモジュールをどのように配布すればよいですか?ビルド済みのperlモジュールをパッケージ化する標準的な方法はありますか?ActiveStateディストリビューションにppmがあることは知っていますが、これをLinuxシステムにも配布する必要があります。配布に必要なファイルすらわかりませんが、少なくとも午後のファイルだと思います。
次の質問-サポートしたいperlのバージョンごとにモジュールプロジェクトをビルドする必要があるようです。どのperlバージョンをビルドする必要があるかをどのように知ることができますか?標準的なガイドラインはありますか...それ以上に、perlの複数のバージョンで動作するパッケージを構築する方法はありますか?
私の質問が意味をなさない場合は申し訳ありません-私はperlのコンパイルされたモジュールの側面にかなり慣れていません。
明確化:基盤となるコンパイル済みソースはプロプライエタリ(クローズドソース)であるため、パッケージのソースコードと適切なmakeアーティファクトを出荷することはできません。できればいいのですが、この場合は起こりません。したがって、モジュール用にビルド済みのバイナリファイルをパッケージ化するための適切なスキームが必要です。
c++ - 非グローバル C++ オブジェクトを Lua 関数に渡す (Swig)
lua を使用してインターフェイスを拡張していますが、オブジェクトへのポインターを lua コードに渡して作業する必要があるという問題に遭遇しました。これらのクラスは SWIG を介してラップされ、swig を使用して lua を介してそれらをインスタンス化できますが、それでは役に立たないオブジェクトが残ります。
イベントに関するものを表すオブジェクトだけでなく、コールバック オブジェクトを lua に渡すことができる必要があります。コールバックをグローバルとして手動で定義することはできません。受け入れられない制約が導入されるためです。
一般的な例として、クラス C と 1 つのパラメーターを受け取る lua の関数がある場合、C 型の C++ ポインターを渡しながらその lua 関数を呼び出すにはどうすればよいでしょうか?
c++ - SWIG_NewPointerObjと値は常にnilです
SWIGを使用してluaで使用するC++オブジェクトをラップし、luaスクリプトのメソッドにデータを渡そうとしていますが、常に「nil」として出力されます。
これがluaコードです:
単位は常にnilです。チェックしましたが、C ++コードでは、ユニットポインタが無効/nullになることはありません
私も試しました:
同じ結果になります。
なぜこれが失敗するのですか?どうすれば修正できますか?
python - Eclipse Pydev:swigで生成されたPythonラッパーの自己エラーを抑制します
swigを使用してPythonラッパーを生成する場合、生成されたpythonファイルのpythonラッパークラスには明示的な自己パラメーターがありません。たとえば、以下を参照してください。
私は日食プラグインPydevで開発しています。Pydevは、明示的な自己パラメーターのないメソッドを検出すると、常にエラーを表示します。エラーを取り除くための2つの方法を知っています。まず、Pydev設定でプロジェクト全体のエラーチェックを無効にします。次に、エラーのあるすべての行に#@NoSelfを追加します。スウィッグで生成されていないファイルに対してエラー警告を受け取りたいので、最初のファイルは使用しません。明らかに、2番目のものもあまり良くありません。手作業で行う必要があり、ファイルを再度生成するたびに、すべての#@NoSelfsが消えてしまうからです。
今の私の質問は、これを達成するためのより良い方法はありますか?
ありがとう
ruby - SVN バインディングで「svn://」ではなくローカル パスを使用する必要があるのはなぜですか?
SWIG で構築された Ruby SVN バインディングを使用しています。ここに少しチュートリアルがあります。
私がこれをするとき
リポジトリに正常にアクセスできます。しかし、私がこれを行うとき
で失敗します
コマンドラインからこれを行うと、出力が得られます
svn:// プロトコルを使用できない理由はありますか?
編集
これが私がやったことであり、うまくいきます。
楽しみ。
python - Python、SWIG、その他の奇妙なもの
ビジュアルCですでに制御できるUSBモジュールのファームウェアがあります。これをPythonに移植したいと思います。このためには、c で書かれた octopus ライブラリが必要です。SWIG によって作成された octopus_wrap というファイルを見つけました。
次に、次のようなメイクファイルを見つけました。
python2.5: swig -python -outdir ./ ../octopus.i gcc -fPIC -c ../../liboctopus/src/octopus.c gcc -fPIC -c ../octopus_wrap.c -I /usr /include/python2.5 gcc -fPIC -shared octopus_wrap.o octopus.o /usr/lib/libusb.so -o _octopus.so
python2.4: swig -python -outdir ./ ../octopus.i gcc -fPIC -c ../../liboctopus/src/octopus.c gcc -fPIC -c ../octopus_wrap.c -I /usr /include/python2.4 gcc -fPIC -shared octopus_wrap.o octopus.o /usr/lib/libusb.so -o _octopus.so
勝つ: gcc -fPIC -c ../../liboctopus/src/octopus.c -I /c/Programme/libusb-win32-device-bin-0.1.10.1/include gcc -fPIC -c octopus_wrap.c -I /c/Python25/libs -lpython25 -I/c/Python25/include -I /c/Programme/libusb-win32-device-bin-0.1.10.1/include gcc -fPIC -shared *.o -o _octopus.pyd - L/c/Python25/libs -lpython25 -lusb -L/c/Programme/libusb-win32-device-bin-0.1.10.1/lib/gcc
クリーン: rm -f octopus* _octopus*
install_python2.4: cp _octopus.so /usr/local/lib/python2.4/site-packages/ cp octopus.py /usr/local/lib/python2.4/site-packages/
install_python2.5: cp _octopus.so /usr/local/lib/python2.5/site-packages/ cp octopus.py /usr/local/lib/python2.5/site-packages/
これを処理する方法がわかりませんが、私が見る限り、octopus.py と _octopus.so は、python に関連する結果の出力ファイルです。
幸いなことに、誰かがすでにそれを行っていたので、それらの 2 つのファイルを「python26/lib」フォルダーに入れました (それが python 2.5 か 2.6 かは関係ありませんか?!)
したがって、USB デバイスを操作する場合は、octopus.py が操作するライブラリです。このファイルをインポートすると、いくつかの問題が発生します。
関連する行 7 は次のとおりです。
したがって、.so ファイルを考慮すると問題があります。私の次のステップは何ですか?
私はそれが多くの混乱を招くことを知っていますが、あなたの誰かが私の心に光をもたらすことを願っています!
事前に