問題タブ [language-binding]
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 - PyGTK オブジェクトをアンラップすることは可能ですか?
私はGtk.Window
Pythonでオブジェクトを持っています。このオブジェクトは、基本的に のラッパーにすぎませんGtkWindow *
。C(を使用PyObject *
)またはPythonから、それを取得することは可能GtkWindow *
ですか?
私は Python で書かれたアプリを持っていますが、特定のウィジェットのレンダリング コードの一部が遅すぎます。別のスレッドでそれを分離しようとしましたが、2 つのスレッドに CPU の作業をさせようとしているので、GIL の影響を受けていると思います。(ほぼ 100% の CPU を使用しているバックグラウンド スレッドは、必要なときに UI スレッドから離れてあまりにも長い時間戦っているため、応答しなくなります。) バックグラウンド ワーカーを C で記述するのは簡単です。ポインタを持っていました。
linux - アドイン マネージャーを介した monodevelop の Fsharp バインディングで依存関係を解決できない
Arch Linux で monodeveloper を使用して F# を実行する必要があります。(使用しないようにアドバイスしないでください。大学のコースで必要なため、使用する必要があります)。このリンクで説明されているように、F# の言語バインディングを追加しようとしました (ダウンロードした zip ファイルを展開し、アドイン マネージャーから追加しようとしました)。
https://code.google.com/p/wildart/wiki/FSharpBinding
次のエラーが表示されます。
依存関係の競合があるため、選択したアドインをインストールできません。
パッケージ「Components v2.2」はどのリポジトリにも見つかりませんでした
パッケージ「Core v2.2」はどのリポジトリにも見つかりませんでした
パッケージ 'Core.Gui v2.2' がどのリポジトリにも見つかりませんでした
パッケージ「Ide v2.2」はどのリポジトリにも見つかりませんでした
パッケージ「Projects v2.2」はどのリポジトリにも見つかりませんでした
パッケージ 'Projects.Gui v2.2' がどのリポジトリにも見つかりませんでした
どうすればこの問題を解決できますか? インターネットで検索しましたが、まだ解決策を見つけることができませんでした。
2 番目の方法として、github で説明されているように、最初からビルドしてインストールしようとしました。
https://github.com/fsharp/fsharpbinding/tree/master/monodevelop
fsharpbinding.zip をダウンロードし、nuget をインストールし (「必要な nuget パッケージ」と表示されているので、他に何をダウンロードすればよいかわかりません)、ファイルを解凍し、フォルダーの下で ./configure.sh を呼び出します。指定されたパスに fsc が見つからないため、失敗します。
これは、(/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perlにfscがありません
検索する他のすべてのディレクトリを正常に検出します。F# は既にインストールされていますが、configure.sh へのパスを渡す fsc を見つける方法がわかりません。私は何をすべきか?
perl - サードパーティの共有 .so ライブラリで local::lib を使用する
バイナリ形式の C ライブラリ (.so
ファイル) とそのライブラリの Perl バインディングのソース (Makefile.PL
など) で構成される Perl ライブラリがあります。
必要なのは、ライブラリに同梱されている Perl サンプルを実行する機能だけです。グローバルに何かをインストールしたり、システム全体の構成を変更したりしたくありません。
だから私は特別なユーザーを作成し、すべてをホームディレクトリ内で実行したいと考えています。もちろん、環境を変更してホームディレクトリにファイル/フォルダーを追加しても問題ありません。
私はすでにlocal::lib
さまざまな CPAN ヘルパーをシステム全体にインストールしています ( cpan
、cpanp
そのcpanm
ため、それらが役立つ場合はそれらを使用できます。
作成~/lib
してそこに置く.so
ことも、 内のどこかに置くこともできます~/perl5
。
問題は、コンパイル時および実行時に共有 C ライブラリを Perl バインディングで使用できるようにする方法です。環境変数が必要なようですがLD_LIBRARY_PATH
、LDFLAGS
それらを一緒に使用する方法がわかりませんlocal::lib
。
さらに、ライブラリの名前はfoo.1.2.3.4.so
but リンカーが望んでい-lfoo
ます。foo.so -> foo.1.2.3.4.so
自分でシンボリックリンクを作成する必要がありますか?
更新:
生成された の関連部分Makefile
:
LDDLFLAGS にパッチを適用して追加の-L
スイッチを含めると機能しますが、汚れているように感じます。
c++ - C と自分の言語の間で FFI を作成する
私がプログラミング言語を実装したとしましょう (ここではAと呼びます)。Aは C によく似ています。
ユーザーが既存の C ライブラリから関数やデータ構造にアクセスできるようにしたいと考えています。これは可能ですか?もしそうなら、単純な実装はどのように見えるでしょうか?
あ
- C++で実装されています
- マシンコードにコンパイル
- クローズドソースの C ライブラリにアクセスする必要がある
c++ - C 消費用に C++ クラス API をラップするときに、例外をエラーおよびエラー メッセージに変換する方法は?
問題
C++ クラスがあるとします。
そのコンストラクターとメソッドを C にエクスポートしたいとします。
「C 消費のための C++ クラス API のラッピング」の質問に対する解決策で与えられたアドバイスに従ったとします。
ここで、クラス コンストラクターが 1 つ以上の例外をスローできるとします。これは、C の世界に戻る前に C++ 側でキャッチする必要がありますが、発生したばかりのエラーに関する情報を C ユーザーに取得する機会を与えます。
最初のアプローチ
NULL ポインターが返されたことを確認MyClass_new()
し、関数を使用してライブラリで発生した「最後のエラー メッセージ」を取得できますが、コンストラクターが失敗した場合、エラー取得に適切なコンテキストを提供するオブジェクトがないため、グローバル変数を使用する必要があります。ただし、ライブラリの再入可能性を損なう最後のエラーを保持するために使用されます。
2 番目のアプローチ
私が思いつく別の可能性は、実際に私が思いついた解決策ですが、クラスがコンストラクター自体の内部で例外をトラップし、それをエラーメッセージに変換して、オブジェクトを一種の「エラー状態」にすることです。
それぞれの後
次のチェックが実行されます
エラーメッセージは次のステートメントで取得されます
3 番目のアプローチ
私が考えることができる別の可能性は、指定されたサイズのバッファーへのポインターを、失敗する可能性のある各関数に渡すことです。これはエラーメッセージでいっぱいになりますが、見た目が面倒です。
どのようにしますか?そのような問題に対処する事実上の標準的な方法はありますか?
c# - C# への Objective-C バインド ポインター配列
Xamarin 内で Objective-C ライブラリと C# をバインドしようとしています。バインドしようとしているクラス ヘッダーは次のとおりです。
私が理解できないのは、関数の最初のパラメーターを何にするかです。私はバインディングをこれにしようとしました:
上記のコードは常に MGLPolyLine.PolyLineWithCoordinates(pointer, 2) 呼び出しから null を返すため、配列を正しく渡していないと思います。このバインディングを行う正しい方法は何ですか?
ありがとう
編集
Objective-Sharpie を使用して、それが作成するバインディングを確認しました。これが得られたものです。
問題は、「btouch: Unknown kind CoreLocationCoordinate2D* coords in method 'MGLPolygon.PolygonWithCoordinates' (B1002)」というエラーが表示されることです。
c++ - Qt/Gtk+ では、同時に 2 つの言語でプログラミングできますか?
qt/gtk+ のようなウィジェット ツールキットには、複数の言語バインディングがあります。C++ でアプリケーションを開発したいが、GUI に gtk+ C 言語バインディングを使用したいとします。アプリケーションのソース コードを 1 つの言語で記述し、別の言語バインディングを GUI に使用することはできますか? アイデアも干渉しますか?