1

一部のライブラリをすばやくテストし、単純な C++ プログラムのコンパイルに数秒かかるのを避けるために、Ogre に依存するライブラリへのバインディングをすばやく生成したいと考えています。

Swigのドキュメントには、次のような単純なものでインターフェースファイルを作成できると書かれています

#include "Ogre.h"

その方法で本当に実行可能ですか?

慎重に作成されたバインディングは必要ないと主張します。さまざまなテスト シナリオをすばやく実験できるようにするための簡単で汚いものだけが必要です...

編集:ここに私がすでに試したことに関するすべての情報があります:

コマンドライン :

swig -c++ -java -includeall -ignoremissing -v -notemplatereduce ogre.i 1>out.log 2>err.log

インターフェイス ファイル:

 %module Ogre
 %{
 include "../include/OGRE/Ogre.h"
 %}
 %include "../include/OGRE/Ogre.h"

stderr (最後の行、多くの警告の後、その他のエラーはありません)

ファイル SWIGTYPE_p_Ogre__MapIteratorT_Ogre__mapT_Ogre__ResourceHandle_Ogre__ResourcePtr_std__lessT_Ogre__ResourceHandle_t_Ogre__STLAllocatorT_std__pairT_Ogre__ResourceHandle_const_Ogre__ResourcePtr_t_Ogre__GeneralAllocPolicy_t_t__type_t.java を開くことができません: そのようなファイルまたはディレクトリはありません

多くの Java ファイルが生成されますが、生成された cxx ファイルには 5 行のコメントしか含まれていません。

4

1 に答える 1

1

さて、私が抱えている問題は完全にスウィッグのせいではないようです。

実際、swigは、パスの長さに関するWindowsの愚かな制限(Windows 7にもこの制限が含まれています)に打ち負かされているため、非常に長いファイル名を生成できません。ソースを別の短い名前のフォルダーに配置すると、問題が修正されました(ただし、一部のタイプはさらに長いため、後で別のバグが発生しました)。

今、私はウィンドウの制限を回避する方法を見つけなければなりません。

編集:非常に長い型名をハッシュすることで制限を回避するSWIGのパッチを提供しました。AFAIK、まだ適用されていません。

于 2012-08-10T19:43:06.210 に答える