3

C/C++ コンパイラとして code::blocks をダミー用の C++ と共に入手しましたが、私の唯一の問題は、これまで聞いたことのないあいまいなスクリプト言語にあることです。"リス"。code::blocks のスクリプト言語を、lua のような、より身近なものに変更することはできますか?

4

1 に答える 1

1

理論上は可能のようです。それが実際に実行可能かどうかは、言うまでもありません。必要なことは次のとおりです。

  1. Luaインタープリター(+ io、mathなどのLuaライブラリ)ソースコードを配置するフォルダー src/sdk/scripting/lua を作成し、そのプロジェクトファイルを作成します
  2. src/sdk/scripting/lua_bindings にフォルダーを作成し、Lua バインディング (Lua スクリプトがホスト アプリケーションにアクセスできるようにする C++ ファイル) を配置します。SWIG などのツールを使用して生成することをお勧めします (codeblocks は SqPlus を使用します)。これには、エクスポートするコードブロック関数/クラスの決定、1 つ以上の .i ファイルの作成、それらに対する SWIG の実行、生成されたファイルの「lua_bindings」への配置が含まれます。バインディング用の DLL プロジェクトを作成する
  3. src/scripts にあるスクリプトに相当する Lua を配置する src/lua_scripts を作成します。むしろ、これらのスクリプトのサブセットです。本の例に従っているだけの場合、Squirrel を介して利用できるすべてのものを Lua にエクスポートすることはほとんどないからです。
  4. コードブロック内で Squirrel インタープリターがインスタンス化されている場所と、RegisterBindings が呼び出されている場所を見つけます。これを Lua インタープリターのインスタンス化に置き換えて、SWIG を介して作成した luaopen_codeblocks を呼び出します (SWIG を使用する場合、RegisterLuaBindings は必要ありません。それが自動的に行われます)。
  5. コードブロックによってさまざまなスクリプトが呼び出される場所を見つけます ( http://wiki.codeblocks.org/index.php?title=Scripting_Code::Blocksを参照)。同等の Lua スクリプトを呼び出します (これは lua_scripts にあります。これをコード ブロックのインストール フォルダーにコピーする必要があります)。たとえば、起動時に codeblocks が自動的に検索する Squirrel スクリプトである startup.script は、src/src/app.cpp 内の次のコードによって実行されます。

    // run startup script
    try
    {
        wxString startup = ConfigManager::LocateDataFile(_T("startup.script"), sdScriptsUser | sdScriptsGlobal);
        if (!startup.IsEmpty())
            Manager::Get()->GetScriptingManager()->LoadScript(startup);
    }
    catch (SquirrelError& exception)
    {
        Manager::Get()->GetScriptingManager()->DisplayErrors(&exception);
    }
    

それくらいだと思います。

当然、スクリプトの範囲に基づいて、手抜きをすることもできますが、おわかりのように、これは気弱な人向けではありません。

于 2013-10-17T21:46:39.493 に答える