从Fortran将数组作为Lua函数参数传递
2016-7-5 9:23:54
收藏:0
阅读:76
评论:0
我正在寻找Fortran示例(也包括接口函数),以将数组作为参数传递给Lua函数。我能够使用fortlua项目开始。但是提供的示例逐个传递一个元素。感激任何帮助。
--Lua代码
local q1
local q2
function getoutput(qout1, qout2)
--qout1和qout2是具有某些维度的数组
q1 = qout1
q2 = qout2
end
-- 在fortran中我使用
config_function('getoutput', args, 2, cstatus)
但是设置args是我正在寻求一些帮助的地方。下面的代码可以针对标量参数变量而不是数组进行操作。
!> 在配置文件中评估函数并获取其结果。
FUNCTION config_function(name, args, nargs, status)
REAL :: config_function
CHARACTER(LEN=*) :: name
REAL, DIMENSION(nargs) :: args
REAL(KIND=c_double) :: anarg
INTEGER :: nargs
INTEGER :: status
INTEGER :: iargs
INTEGER(c_int) :: stackstart
stackstart = lua_gettop(mluastate)
config_function = 0
status=0
CALL lua_getglobal(mluastate, TRIM(name)//C_NULL_CHAR)
IF (lua_type(mluastate,-1) .eq. LUA_TFUNCTION ) THEN
DO iargs = 1,nargs
anarg = args(iargs)
CALL lua_pushnumber(mluastate, anarg)
ENDDO
IF (lua_pcall(mluastate, nargs, 1, 0) .eq. 0) THEN
if (lua_isnumber(mluastate, -1) .ne. 0) THEN
config_function = lua_tonumber(mluastate, -1)
CALL lua_settop(mluastate, -2)
ELSE
!这里无需弹出任何内容
status=-3
ENDIF
ELSE
CALL lua_settop(mluastate, -2)
status=-2
ENDIF
ELSE
CALL lua_settop(mluastate, -2)
status=-1
ENDIF
IF (stackstart .ne. lua_gettop(mluastate)) THEN
WRITE(*,*)'从config_function出来时,堆栈的大小不同'
ENDIF
END FUNCTION config_function
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法