簡體   English   中英

從C ++應用程序自動構建Lua api

[英]autobuild of Lua api from C++ application

我有一個C ++應用程序,我想為此應用程序設計並提供Lua API,有一些工具可以幫助我嗎? 也許有一種方法可以標記一些方法並將其公開給Lua API層? 對於其他語言,我看到了可以在解析代碼后生成API的工具,對於Lua,有類似的東西嗎?

我非常贊賞LuaBridge的非常輕量級的方法,該方法僅包含1個(一個!)頭文件即可包含在您的應用程序中

https://github.com/vinniefalco/LuaBridge

https://github.com/vinniefalco/LuaBridgeDemo

/** Declare LUA binding for this class
 *
 * @param global_lua
 */
void c_entity::lua_bind(lua_State* L) {
    getGlobalNamespace(L)
        .beginClass<c_entity>("c_entity")
            .addFunction("getSpeed",&c_entity::get_linear_speed)
            .addFunction("getName",&c_entity::get_name)
            .addFunction("getMaxSpeed",&c_entity::get_max_linear_speed)
            .addFunction("getAcceleration",&c_entity::get_max_linear_acceleration)
            .addFunction("getHull",&c_entity::get_hull)
            .addFunction("getArmor",&c_entity::get_armor)
            .addFunction("getShield",&c_entity::get_shield)
            .addCFunction("getStatus",&c_entity::getStatus)
            .addFunction("logTrace",&c_entity::log_trace)
            .addFunction("logInfo",&c_entity::log_info)
            .addFunction("logDebug",&c_entity::log_debug)
            .addFunction("logError",&c_entity::log_error)
        .endClass();
}

SWIG 根據您的需要以及如何“清除” C / C ++頭,您可以將整個.h文件提供給SWIG或選擇要導出到Lua的函數/類(如以下基本示例所示):

%module example
%{
#include "example.h"
%}
int gcd(int x, int y);
extern double Foo;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM