3

Tcl スクリプトからサード パーティの DLL にアクセスする方法を学習しようとしています。このトピックに関する情報はさまざまな場所にたくさんありますが、その方法を最初から最後まで簡潔に説明しているものはありません。さまざまな程度の失敗で、多くのことを試しました。SWIG と Visual Studio Express 2012 を使用して、最も成功に近づいています (どちらも完全な初心者です...)。

ここで同様の質問に対する以前の回答を見ましたVisual Studio 2010からSWIGを使用してDLLを作成する方法、目標はCコードからDLLを作成することでした。私は DLL のソースを持っておらず、DLL を作成したベンダーからの .dll、.h、および .lib ファイルしか持っていません。

その投稿のレスポンダーには、私が探しているものに非常に近い指示があったと思います。彼は、DLL をラップするプロセスは似ていると述べ、それを達成するために指示が必要かどうか尋ねました。彼がこの投稿に反応することを願っています...

(免責事項: 私もこのフォーラムの完全な初心者であり、その投稿を直接フォローアップする方法がわかりませんでした。私の無知を許してください...)

私の目標を達成する方法について、誰でも詳細な指示を与えることができますか? 前もって感謝します!

4

1 に答える 1

2

私が使用した Tcl の共有ライブラリにアクセスするには、2 つのオプションがあります。

  1. コンパイル済みの「C」拡張機能を作成します。これは、手動でコーディングするか、SWIG を介して行うことができます。通常、拡張機能は、Tcl インタープリターと共有ライブラリ内の関数との間の接着コードにすぎません。SWIGは私の得意分野ではないので、他の人があなたを助けなければならない. 「C」拡張機能を作成する場合は、Tcl ソースにサンプル拡張機能があり、Tcl wiki にかなりのヘルプがあります。
  2. 一般的な共有オブジェクト呼び出し元を使用します。私が普段使っているのは「ffidl」です。簡単なグーグルはそれを指すでしょう。一般的な共有オブジェクト呼び出し元を使用するには、通常、いくつかの Tcl コマンドを呼び出して、呼び出された関数のインターフェイスを定義する必要があります。次に、ライブラリのロード、エントリ ポイントの検索、実際の関数の呼び出し、結果の返しを処理します。

どちらが最適かは、状況によって異なります。ライブラリが比較的小さい場合は、通常、手動で拡張機能をコーディングします。サイズが大きく、呼び出したい関数が少ない場合は、通常は ffidl を使用して面倒な作業を行います。

于 2013-01-18T00:14:22.770 に答える