問題タブ [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.

0 投票する
1 に答える
90 参照

python - PyGTK オブジェクトをアンラップすることは可能ですか?

私はGtk.WindowPythonでオブジェクトを持っています。このオブジェクトは、基本的に のラッパーにすぎませんGtkWindow *。C(を使用PyObject *)またはPythonから、それを取得することは可能GtkWindow *ですか?

私は Python で書かれたアプリを持っていますが、特定のウィジェットのレンダリング コードの一部が遅すぎます。別のスレッドでそれを分離しようとしましたが、2 つのスレッドに CPU の作業をさせようとしているので、GIL の影響を受けていると思います。(ほぼ 100% の CPU を使用しているバックグラウンド スレッドは、必要なときに UI スレッドから離れてあまりにも長い時間戦っているため、応答しなくなります。) バックグラウンド ワーカーを C で記述するのは簡単です。ポインタを持っていました。

0 投票する
1 に答える
1632 参照

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 を見つける方法がわかりません。私は何をすべきか?

0 投票する
0 に答える
98 参照

perl - サードパーティの共有 .so ライブラリで local::lib を使用する

バイナリ形式の C ライブラリ (.soファイル) とそのライブラリの Perl バインディングのソース (Makefile.PLなど) で構成される Perl ライブラリがあります。

必要なのは、ライブラリに同梱されている Perl サンプルを実行する機能だけです。グローバルに何かをインストールしたり、システム全体の構成を変更したりしたくありません。

だから私は特別なユーザーを作成し、すべてをホームディレクトリ内で実行したいと考えています。もちろん、環境を変更してホームディレクトリにファイル/フォルダーを追加しても問題ありません。

私はすでにlocal::libさまざまな CPAN ヘルパーをシステム全体にインストールしています ( cpancpanpそのcpanmため、それらが役立つ場合はそれらを使用できます。

作成~/libしてそこに置く.soことも、 内のどこかに置くこともできます~/perl5

問題は、コンパイル時および実行時に共有 C ライブラリを Perl バインディングで使用できるようにする方法です。環境変数が必要なようですがLD_LIBRARY_PATHLDFLAGSそれらを一緒に使用する方法がわかりませんlocal::lib

さらに、ライブラリの名前はfoo.1.2.3.4.sobut リンカーが望んでい-lfooます。foo.so -> foo.1.2.3.4.so自分でシンボリックリンクを作成する必要がありますか?

更新:

生成された の関連部分Makefile:

LDDLFLAGS にパッチを適用して追加の-Lスイッチを含めると機能しますが、汚れているように感じます。

0 投票する
1 に答える
477 参照

c++ - C と自分の言語の間で FFI を作成する

私がプログラミング言語を実装したとしましょう (ここではAと呼びます)。Aは C によく似ています。

ユーザーが既存の C ライブラリから関数やデータ構造にアクセスできるようにしたいと考えています。これは可能ですか?もしそうなら、単純な実装はどのように見えるでしょうか?

  • C++で実装されています
  • マシンコードにコンパイル
  • クローズドソースの C ライブラリにアクセスする必要がある
0 投票する
1 に答える
193 参照

c++ - C 消費用に C++ クラス API をラップするときに、例外をエラーおよびエラー メッセージに変換する方法は?

問題

C++ クラスがあるとします。

そのコンストラクターとメソッドを C にエクスポートしたいとします。

C 消費のための C++ クラス API のラッピング」の質問に対する解決策で与えられたアドバイスに従ったとします。

ここで、クラス コンストラクターが 1 つ以上の例外をスローできるとします。これは、C の世界に戻る前に C++ 側でキャッチする必要がありますが、発生したばかりのエラーに関する情報を C ユーザーに取得する機会を与えます。

最初のアプローチ

NULL ポインターが返されたことを確認MyClass_new()し、関数を使用してライブラリで発生した「最後のエラー メッセージ」を取得できますが、コンストラクターが失敗した場合、エラー取得に適切なコンテキストを提供するオブジェクトがないため、グローバル変数を使用する必要があります。ただし、ライブラリの再入可能性を損なう最後のエラーを保持するために使用されます。

2 番目のアプローチ

私が思いつく別の可能性は、実際に私が思いついた解決策ですが、クラスがコンストラクター自体の内部で例外をトラップし、それをエラーメッセージに変換して、オブジェクトを一種の「エラー状態」にすることです。

それぞれの後

次のチェックが実行されます

エラーメッセージは次のステートメントで取得されます

3 番目のアプローチ

私が考えることができる別の可能性は、指定されたサイズのバッファーへのポインターを、失敗する可能性のある各関数に渡すことです。これはエラーメッセージでいっぱいになりますが、見た目が面倒です。

どのようにしますか?そのような問題に対処する事実上の標準的な方法はありますか?

0 投票する
1 に答える
598 参照

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)」というエラーが表示されることです。

0 投票する
2 に答える
157 参照

c++ - Qt/Gtk+ では、同時に 2 つの言語でプログラミングできますか?

qt/gtk+ のようなウィジェット ツールキットには、複数の言語バインディングがあります。C++ でアプリケーションを開発したいが、GUI に gtk+ C 言語バインディングを使用したいとします。アプリケーションのソース コードを 1 つの言語で記述し、別の言語バインディングを GUI に使用することはできますか? アイデアも干渉しますか?