当前位置: 首页 > news >正文

做一个综合商城网站多少钱合肥seo关键词排名

做一个综合商城网站多少钱,合肥seo关键词排名,建设体育用品网站分析,广告视频制作公司Lua Call C function Lua脚本可以和C函数灵活的结合,Lua脚本作为控制语言,使用C函数来做性能计算部分。 Lua脚本的执行器有Lua 和 Luajit。 使用Lua执行器,可以通过C语言注册C函数到Lua State, 然后Lua脚本可以调用该C函数。 使用Luajit&…

Lua Call C function

Lua脚本可以和C函数灵活的结合,Lua脚本作为控制语言,使用C函数来做性能计算部分。
Lua脚本的执行器有Lua 和 Luajit。
使用Lua执行器,可以通过C语言注册C函数到Lua State, 然后Lua脚本可以调用该C函数。

使用Luajit,支持FFI,可以支持 require(“libxxx.so”) , 通过函数符号表请求,同时Luajit也可以支持调用主程序的函数。
本文将展示Lua脚本直接调用主程序函数的例子。

主程序导出动态符号表

主程序默认是没有自定义的函数的符号的
请添加图片描述

编译选项增加 -rdynamic

就包含了自定义函数的动态符号表
请添加图片描述

Lua查找并使用C函数

引用ffi,先定义函数

local ffi = require("ffi")-- 1. 先做C接口定义
ffi.cdef[[bool SendMsg(const char* json_str, const char* str1, const char* str2, int pri);int AddNumbers(int a, int b);
]]-- 测试基本函数调用
print("\n基本函数调用:")
local result = ffi.C.SendMsg('{"temp": 25.5}', "data", "sensor", 0)
print("Send result:", result)

Makefile指定Luajit执行器

Luajit是必须的,如果是lua执行器,则不支持该操作

TARGET = test2SRCS = $(wildcard *.cpp)CC = g++CFLAGS += -g -O2 -std=c++11 -I/usr/local/include/luajit-2.1/LDFLAGS += -lyaml-cpp -L/usr/local/lib -lluajit-5.1 -ldl -rdynamic
all: $(TARGET)$(TARGET): $(SRCS)$(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS).PHONY: clean
clean:rm $(TARGET)

C代码定义函数,执行Lua

luaL_dofile 即执行指定Lua脚本

    lua_State *L = luaL_newstate();luaL_openlibs(L);// Load Lua scriptif (luaL_dofile(L, "advanced_ffi.lua") != LUA_OK) {fprintf(stderr, "Error loading Lua script: %s\n", lua_tostring(L, -1));lua_close(L);return 1;}lua_close(L);

完整代码simple_ffi.cpp

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
extern "C" {#include "lua.h"#include "lauxlib.h"#include "lualib.h"#include <stdint.h>// 要被Lua FFI调用的C函数
bool SendMsg(const char* json_str, const char* str1, const char* str2, int pri) {printf("=== C Function Called ===\n");printf("JSON: %s\n", json_str ? json_str : "NULL");printf("str-1: %s\n", str1 ? str1 : "NULL"); printf("str-2: %s\n", str2 ? str2 : "NULL");printf("Priority: %d\n", pri);if (!json_str || !str2) {printf("ERROR: Missing required parameters\n");return false;}printf("Message sent successfully!\n");return true;
}int AddNumbers(int a, int b) {printf("C function: %d + %d = %d\n", a, b, a + b);return a + b;
}const char* GetVersion() {return "FFI Demo v1.0";
}}int main() {printf("C Program: Functions are ready for FFI access\n");printf("You can now run: luajit ffi_test.lua\n");// 演示直接调用printf("\nDirect C calls:\n");SendMsg("{\"test\":\"data\"}", "sub", "title", 5);printf("Add result: %d\n", AddNumbers(10, 20));printf("Version: %s\n", GetVersion());lua_State *L = luaL_newstate();luaL_openlibs(L);// Load Lua scriptif (luaL_dofile(L, "advanced_ffi.lua") != LUA_OK) {fprintf(stderr, "Error loading Lua script: %s\n", lua_tostring(L, -1));lua_close(L);return 1;}lua_close(L);printf("All tests completed successfully.\n");return 0;
}

测试

导出函数符号表的test2,执行成功。

请添加图片描述

http://www.dtcms.com/a/545246.html

相关文章:

  • 网站开发与管理对应的职业及岗位优质的seo网站排名优化软件
  • 新人如何学会安装与切换Rust版本:从工具链管理到生产实践
  • 公司网站制作源码wordpress 最快的版本
  • Rust:与JSON、TOML等格式的集成
  • 应用商城发布项目
  • 6.3.3.1 大数据方法论与实践指南-大数据质量度量指标体系
  • 二叉树----规矩森严的“家族树”(第11讲)
  • 随州网站建设有哪些南昌网站建设是什么意思
  • php免费企业网站模板祥云县住房和城乡建设网站
  • 宏观经济走势对网民互联网消费行为的影响:基于开源链动2+1模式AI智能名片S2B2C商城小程序的实证分析
  • 网站开发 环境品牌设计概念
  • 网站建设加盟培训网站内图片变换怎么做
  • Linux设置服务开机自启动脚本
  • wordpress适合做大型网站吗潍坊专业人员继续教育
  • openpnp - 如果出现不正常的情况,需要将设备和主板重新上电
  • 【音视频】WebRTC连接建立流程详解
  • 从零开始的C++学习生活 17:异常和智能指针
  • OceanBase 分布式数据库的 ETL 实践:从抽取到实时分析
  • 在谷歌上做国际网站支持wordpress的主机
  • Prometheus 详解:从原理到实战,打造企业级云原生监控体系
  • 使用SSE进行实时消息推送!替换WebSocket,轻量好用~
  • YOLO V2全面解析:更快、更准、更强大的目标检测算法
  • 小白python入门 - 12. Python集合——无序容器的艺术与科学
  • 墨刀做的网站设计阿里云域名出售
  • 悬垂引用的攻防战:Rust 如何从根源杜绝内存访问灾难
  • IDEA好用的插件
  • 湖南住房与城乡建设部网站顺义公司网站建设
  • Matplotlib 直方图
  • RocketMQ核心架构解析与实战指南
  • Excel怎么制作下拉菜单?