問題タブ [vapi]
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.
c - Vala vapi ファイルのドキュメント
Vala を使用して、既存の GLib ベースの C プロジェクトをハックしたいと思います。
基本的に私がやっていることは、ビルド プロセスの開始時に、valac を使用して .vala ファイルから .c および .h ファイルを生成し、生成されたファイルを .c または .h ファイルと同じようにコンパイルすることです。
これはおそらく最善の方法ではありませんが、ほとんどの場合問題なく機能しているようです。
私の問題は、Vala コードから既存の C コードにアクセスするのに苦労していることです。これを行う簡単な方法はありますか?
独自の .vapi ファイルを書き込もうとしましたが (vala に付属のツールではうまくいきませんでした)、これらの書き方に関する適切なドキュメントが見つかりません。
存在しますか?既存の C コードを呼び出すには、これらのファイルのいずれかが必要ですか?
sql - Microsoft SQL Serverのバインディングはありますか?
誰かがSQLServerの任意のバージョンの使用についてオリエンテーションを教えてもらえますか?
現在、バージョン2003を使用しています。
gnome - GTK+ 3 での VAPI の問題
ArchLinux で Vala をコンパイルしようとしていますが、パッケージをインクルードしようとすると、gtk+-3.0
GDK と GTK+ 2.0 もインクルードされているようです。valac --pkg gtk+-3.0 test.vala
次のエラーが発生します。
これらのエラーを含めない、gtk+-2.0
または無視するように指定する方法はありますか?valac
introspection - Vala VAPI と GObject イントロスペクションの関係は?
まず、いくつかのコンテキスト: 私は PyGObject を使用して中規模のアプリケーションを作成した Python 開発者であり、GObject Introspection を利用して GSettings などにアクセスしています。私の Python オブジェクトの一部は、実際には GObject.GObject をサブクラス化しています。 GObject をかなり広範囲に使用します。
最近、C ライブラリを GObject (Shotwell/Vala で使用される gexiv2) でラップする特定のライブラリに注目しましたが、現在はイントロスペクションをサポートしていません。Python からアクセスできるように gexiv2 にイントロスペクション サポートを追加することに興味がありますが、このトピックをどこから始めればよいかさえわかりません。
イントロスペクションと VAPI について調べていると、イントロスペクション アノテーションから VAPI を自動的に生成できるという事実に言及しているドキュメントがたくさんあります。VAPI を指定してイントロスペクション アノテーションを自動的に生成することは可能ですか?
ありがとう。
vala - webkit-1.0とgtk+-3.0の.vapiファイルに900を超える同じシンボルがあるのはなぜですか
タイトルにあるように、私の問題は、gtk3とwebkit1の両方を使おうとしていることです。
私はこの例に従っていますhttps://live.gnome.org/Vala/WebKitSample
ただし、2ではなくgtk3を使用しています。
valac0.16.0を使用しています
エラーがGdk2とGdk3の同じシンボルであることに気づきました。
これは私の問題のリンクを解決する方法のようです が、非標準です。
気にしないでください、私はバンドルされたwebkitgtkでそれを修正しました。
vala - 配列を参照渡しするために Vapi 定義で使用するパラメーター
libmodbus を使用して、ModbusTCP を使用して単一のデバイス レジスタを読み取る次の C コードがあります。
私が生成したVapiを使用してこれをValaに切り替えようとしています.newとreadの内容は次のとおりです。
翻訳されたValaプログラムは次のとおりです。
偶然にも、これを C コードにコンパイルしてから gcc を使用してバイナリにコンパイルすると、次のエラーが発生します。
これは驚くべきことではありません。しかし、Vapi の内容を libmodbus ヘッダーのプロトタイプに近づけるためにどのように変更すればよいかわかりません。
配列オプションを組み合わせて「out」を使用してみましたが、一度に複数の 2 バイト レジスタを取得できませんでした。
提案をありがとう。
vala - free_function を静的クラス メソッドにすることはできますか?
これは、 vapi ファイルに void ポインター typedef を書き込むにはどうすればよいですか?へのフォローアップの質問です。
[Compact] class
現在、unixODBCsSQLAllocHandle
関数で割り当てられたハンドルを表す4 つのほぼ同一のes があります。
最初のもの (ENV タイプ ハンドル用) は次のようになります。
これはコンパイルされません。
として静的クラスメソッドを使用することは可能free_function
ですか?
そうでない場合、少なくともfree_function
vapiファイルにカスタムを書き込む方法はありますか?
SQLFreeHandle
関数はハンドルの型とハンドルを引数として取るため、カスタム関数が必要です。
vapi ユーザーの観点から、本当に重要なことは次のとおりです。
他の唯一の解決策は[SimpleType] struct
、元の質問で apmasell が提案したように a を使用することです。SQLHANLDE
これにより、 aが実際には参照型であるという事実が隠されます。
私の現在の実装の完全なコードは、オンラインで入手できます: https://github.com/antiochus/unixodbc-vala/tree/0486f54dc3f86d9c8bf31071980e4f171aca9591
vala - vapi ファイルの作成方法と使用方法
カスタムvapiファイルを作成したいのですが、基本的なものはありますが、明らかに何かが欠けており、これを適切に行う方法がどこにも見つかりません。私の主な目標は、 libtorrentを使用してトレント アプリを作成し、vala と gtk を使用して GUI (フロントエンド?) を作成することです。
私は c_func_head.h を持っています:
c_functions.c:
vala_p.vapi:
そして最後に vala_program.vala:
ご覧のとおり、extern も使用しましたが、それで機能しましたが、vapi ファイルを使用したいと考えています。
私はコンパイルしました(すべてが同じフォルダーにあります):
valac vala_program.vala --vapidir=vala_p.vapi -o 実行する必要があります
エラーは次のとおりです。
名前空間名 `MyFunc' は、MyFunc を使用して見つかりませんでした。
もう一つ。libtorrent のバインディングを作成することは可能ですか? それはc ++を使用しており、c ++も使用する必要があると思います。
pointers - デュアル関数で引数をバインドする方法は?
次の C 関数を検討してください。
prepare 関数は、遅延long *
出力変数へのポインタを格納するために使用されます。
C では次のように使用できます。
私はValaでこのようなことを達成しようとしています:
Valaのバインディングをどのように記述しprepare ()
ますか?INDICATE_SPECIAL_CASE
変数を 2 つに分割することは可能ですか?
(in )out
への呼び出しの後に変数が書き込まれているにもかかわらず、ポインターの使用を避けることは可能ですか?prepare ()
execute ()
webkit - vala で簡単な webkit ブラウザを作成するには?
私はこの簡単なコードを持っています:
ここで私の問題は、次のようにコンパイルするときです。
次のエラーが発生します。
valac-0.26 を使用しているため、webkit2gtk-4.0 が含まれています。「 webkit2gtk-4.0.pc 」がないことをグーグルで見つけたので、アーチパッケージからダウンロードした後、「javascriptcore.pc」が必要になり、それもコピーした後、同じエラーメッセージが表示されました。これらはすべて「/usr/lib/pkgconfig」にありました。今、私はかなり立ち往生しています。できる人がいたら助けてください。