linux下的c++与lua交互编译的问题 66C

图片说明
makefile

 .SUFFIXES: .cpp .o
.PHONY: clean all

CC = g++

CFLAGS = -Wall -g

LIBS = -lpthread -std=c++11 -l /usr/include/lua5.1/ -llua5.1 

SRCS = lua.cpp

OBJS = $(SRCS:.cpp=.o)

EXEC = lua

$(EXEC):$(OBJS)
    $(CC) $(CFLAGS) $^ -o $@ $(LIBS)

%o:%.cpp
    $(CC) $(CFLAGS) -c $< -o $@ 

clean:
    rm -rf *.o $(EXEC)

路径信息:

 root@wangpeng:/home/wp01/lua# locate lua.h
/usr/include/lua5.1/lua.h
/usr/include/lua5.1/lua.hpp
/usr/src/linux-headers-4.4.0-78-generic/include/config/scsi/dh/alua.h
/usr/src/linux-headers-4.4.0-79-generic/include/config/scsi/dh/alua.h

/usr/lib/x86_64-linux-gnu/liblua5.1-c++.a
/usr/lib/x86_64-linux-gnu/liblua5.1-c++.so
/usr/lib/x86_64-linux-gnu/liblua5.1-c++.so.0
/usr/lib/x86_64-linux-gnu/liblua5.1-c++.so.0.0.0
/usr/lib/x86_64-linux-gnu/liblua5.1-iconv.so.0
/usr/lib/x86_64-linux-gnu/liblua5.1-iconv.so.0.0.0
/usr/lib/x86_64-linux-gnu/liblua5.1-lpeg.so.2
/usr/lib/x86_64-linux-gnu/liblua5.1-lpeg.so.2.0.0
/usr/lib/x86_64-linux-gnu/liblua5.1-rrd.a
/usr/lib/x86_64-linux-gnu/liblua5.1-rrd.so
/usr/lib/x86_64-linux-gnu/liblua5.1-rrd.so.0
/usr/lib/x86_64-linux-gnu/liblua5.1-rrd.so.0.0.0
/usr/lib/x86_64-linux-gnu/liblua5.1.a
/usr/lib/x86_64-linux-gnu/liblua5.1.so
/usr/lib/x86_64-linux-gnu/liblua5.1.so.0
/usr/lib/x86_64-linux-gnu/liblua5.1.so.0.0.0

最后编译的时候显示无法找到与lua相关的.h文件,解决方法是什么。。。大神来指导一下

4个回答

LIBS = -lpthread -std=c++11 -l /usr/include/lua5.1/ -llua5.1
这一句改为
LIBS = -lpthread -std=c++11 -I /usr/include/lua5.1/ -llua5.1

你这个问题是无法找到头文件的问题,你可以把这个lua相关的头文件都放在/usr/include就好了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
【Lua】Lua与C交互
上一篇文章简单介绍了在Lua中如何调用C,其中的原理还是需要稍微深究一下。 文章参考自:Lua和C交互的简易教程(HansChen的博客) C/C++与Lua交互的基础源于虚拟栈。在Lua中,Lua堆栈就是一个struct,堆栈索引的方式可是是正数也可以是负数,区别是:正数索引1永远表示栈底,负数索引-1永远表示栈顶 一个简单的例子: #include #includ
Linux下lua安装以及和c的交互
lua安装,与c交互的过程记录lua安装 在此我的机器环境是cenos 6.8 我安装的是lua5.1.4版本 安装lua编译的相关依赖 yum -y install readline-devel ncurses-devel tar -zxvf lua-5.1.4.tar.gz cd lua-5.1.4 make linux test make install 至此
C与Lua交互之交互原理
lua作为脚本语言,就是用来扩展宿主程序或者嵌入到宿主程序中的,这里宿主程序使用C来讲解下Lua与C交互的原理。在这之前先讲下C语言是如何调用函数以及函数参数的。C函数和参数的调用我们都知道C语言的函数调用时通过函数调用栈实现的,当一个函数调用另一个函数时,会按照约定的格式将要调用的函数的参数压人栈中,在被调用的函数中,可以按照约定的规格将参数从栈中取出, 同理对于返回值的传递也是通过堆栈实现的,...
linux下编译lua源码
步骤: 1.下载lua包 wget -c http://www.lua.org/ftp/lua-5.3.4.tar.gz 2.解压lua包 tar zxvf lua-5.3.4.tar.gz 3.安装readline (如果安装过了跳过)yum -y install readline-devel ncurses-devel 4.进入lua解压目录 cd lua-5.3.4 5.编译make li
Lua的与C交互
.
lua与c交互学习
一个简单的额Lua与C交互入门,可以当做一个学习的小示例
lua与c交互
c与lua交互的简单例子
C/C++与lua的交互
lua,C/C++,交互,stack
C/C++与Lua交互
1.什么是Lua Lua [1]  是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从...
lua和C交互
是一个lua和C交互的ppt,内容容易理解,希望可以帮助初学着(一起学习)
C与lua交互
总结一下lua与C的相互调用 列举一个简单的例子 1.创建一个win32控台项目 2.下载lua库,安装. 3.设置动态链接(对于基础不扎实的千万记得设置), 项目>>属性>>连接器>>附加依赖项>> 默认安装位置 C:\Program Files (x86)\Lua\5.1\lib\lua5.1.lib(视步骤2的安装位置) C文件 // hellolua.cpp
lua与c的交互
Lua 是一门轻巧、灵活、扩展性很强的脚本语言,它可以很容易的嵌入到其他语言(C/C++)中使用,这主要得益于其提供了功能强大的 C API,这让其跟 C/C++ 间的互调成为一件很轻松的事。 Lua 调用 C Lua 调用 C 函数,其实就是把 C 函数注册到 Lua 中去,把 C 函数地址传递给 Lua 解释器。这个传递是要遵循一个的协议的,即: 1
Lua与C交互
//main.h文件#include <stdio.h> #include "lua.h" #include "lauxlib.h" #include "lualib.h"#pragma mark - Lua调用C语言代码 int sayHello(lua_State *L) { printf("无参C方法\n"); return 0; }int getStringFun(lua_S
C与Lua的交互
1.C 调用Lua #include #include #include #include #include #include ............ #include "lua.h" #include "lauxlib.h" #define false 0 #define true 1 #define Lua_Script "./script
Lua与C交互示例
此代码提供了lua与c的函数的交互过程,内容具体包含C调用lua & lua call c 以及lua加载dll
lua与C交互函数
在lua中,lua堆栈就是一个struct,堆栈索引的方式是正数也可以是负数,区别是:正数索引1永远表示栈低,负数索引-1永远表示栈顶。 栈顶 4 ------------- -1 3 ------------- -2 2 ------------- -3 1 ------------- -4 栈底 lua_getto...
Lua 基础之与 C 交互
lua 是一种嵌入语言,并不能独立运行,而是一个可以链接到其它应用程序的库。lua 是使用 c 语言开发的,因此它与 c 语言的交互非常简单,但 lua 作为一门十分流行的脚本语言,不仅能嵌入到语言中,还能嵌入到 java,c# 等其它语言中。lua 与 c 语言的交互方式有两种,一种是以 c 语言为主,lua 作为 c 语言调用的一个库,这种方式的 c 代码称为 应用程序代码
Lua 与 C 的交互
转载:https://www.cnblogs.com/chenny7/p/3993456.html Lua是一个嵌入式的语言,它不仅可以是一个独立运行的程序,也可以是一个用来嵌入其它应用的程序库。 C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1、  读写Lua全局变量的函数; 2、  调用Lua函数的函数; 3、  运行Lua代码片段的函数; 4、  注册C函...
Lua学习笔记——C语言与Lua的交互
Lua与C的交互 C代码不可以直接与Lua代码交互,中间是通过Lua引擎实现的(C代码要调用Lua需要链上Lua引擎库 gcc lua.c -llua50) gcc lua.c -llua5.1 //链上Lua50引擎库,之后lua.c就可以 如果提示没有lua50库,就使用 sudo apt-get install liblua5.1-0-dev 安装lua引擎库 Lua堆栈一般最
linux下的c编译问题
我安装了opensuse,rn然后在命令行里 打gcc 命令编译c文件 ,rn提示 命令找不到,rn然后whereis gcc, 提示在/user/lib/gcc下 ,但不知道怎么设置rn应该怎么设置啊,好像gcc工具opensuse里已经包含了,rnrn应该怎么设置啊 急!!!
lua与C交互(3):与lua表的简单交互
C读取lua表中字段的值。 lua代码: print("print from test lua.") name = "linxing" age = 19 list = {} list.width = 190 list.height = 540 list.title = "rectangle" CC代码: #include &lt;stdio.h&gt; #include &lt;st...
Lua与C交互之函数注册
概述前面讲了C与Lua交互的原理,其中讲到了Lua调用C的接口时,需要C将函数通过注册机制注册到当前lua_State的全局变量中,接下来通过一个实例具体介绍怎么注册并调用到C的函数接口。1 实现实际操作的C函数static int add(int a, int b) { return a+b; } static int sub(int a, int b) { return a - b; }...
linux下编译和使用lua及cjson
前面的文章记录了lua的编译和使用,这里再整理一下,侧重说明下lua json库的编译及使用,文章最后再谈下cjson使用中有可能遇到的excessively sparse array 问题及解决方法。 lua编译 lua的源代码安装过程挺简单的,以lua5.3为例 # wget http://www.lua.org/ftp/lua-5.3.2.tar.gz # tar -zxf lua-5....
Lua笔记 & 与C之间的交互
Lua学习笔记: http://www.防止和谐cnblogs.com/weixliu/p/4185001.html Lua和C之间的交互巧妙的模拟了C语言的堆栈,Lua和C语言之间的相互调用和访问都通过堆栈来进行,巧妙的解决了不同类型之间变量相互访问的问题。具体的,我们想象如下一个图     +-------+                        +------
C/C++ Lua交互(一)
一、Xcode IDE下使用lua1、下载lua源码 http://www.lua.org 并解压 lua源代码放在src文件夹下 2、打开xcode新建一个C/C++工程 (我的叫Lua2C++) 3、配置xcode,添加lua到工程 弹出如下界面弹出如下界面弹出如下界面弹出如下界面弹出如下界面弹出如下界面好了,至此已经可以使用lua了,下一节我们继续来学习C/C++ 与lua 的交互
Lua和C如何交互(一)
要理解Lua和C的交互,先要理解堆栈和全局表两个概念 堆栈 Lua和C/C++语言交互的主要方法是一个无处不在的虚拟栈,栈的特点是先进后出. 在Lua中,Lua堆栈就是一个struct 堆栈索引的方式可是是正数也可以是负数 正数索引1永远表示栈底,负数索引-1永远表示栈顶 全局表  Lua的全局表可以想象成一个map哈希表结构,比如Lua有一个变量: name
lua 和C交互相关函数
1 堆栈相关 1.1 int (lua_gettop) (lua_State *L); 【-0,+0】 用于返回栈中元素的个数,同时也是栈顶元素的索引,因为栈底是1,所以栈中有多少个元素,栈顶索引就是多少; 2.2 void (lua_settop) (lua_State *L, int idx); 【-?,+?】 把栈索引idx设置为栈...
Lua与C语言交互实例
test.lua内容:Name = &quot;Tom&quot; like = &quot;apple&quot; function Hello(name, like) print(string.format(&quot;Hello, %s!, you like %s&quot;, name, like)) end function StrTest() local strName = &quot;123456789&quot; local ret ...
C++与Lua交互的问题
有一个对话框,响应一个按钮消息的时候我调用了一个lua函数,发现lua函数是能进的,但是lua函数中又返过来调用这个对话框中UpdataDlg函数,打断点发现进不了C++的UpdataDlg函数。求教这是为什么呢rnrnrn首先我在对话框初始化的时候注册了这个UpdataDlg静态函数:lua_register(m_pLua, "UpdataDlg", CLayerParam2Dlg::UpdataDlg);rnrn然后在lua函数中:function OnPageChange(index)rn CurrentSelectPage = 'Page'..tostring(index) // 这句代码是能执行的rn return UpdataDlg //调用了此函数,rn endrnrn发现lua调用不了UpdataDLg
c#与LUA交互问题
Lua lua = new Lua(); rn lua.DoFile(@"c:\transfer.lua");rnrnlua脚本如下rnrnrequire "date"rnprint("hello world")rnrn运行出错,rnrnc:\transfer.lua:3: module 'date' not found:rn no field package.preload['date']rn no file '.\date.lua'rn no file 'D:\Backup\Visual Studio 2008\Projects\luatest\luatest\bin\x86\Debug\lua\date.lua'rn no file 'D:\Backup\Visual Studio 2008\Projects\luatest\luatest\bin\x86\Debug\lua\date\init.lua'rn no file 'D:\Backup\Visual Studio 2008\Projects\luatest\luatest\bin\x86\Debug\date.lua'rn no file 'D:\Backup\Visual Studio 2008\Projects\luatest\luatest\bin\x86\Debug\date\init.lua'rn no file 'd:\Program Files (x86)\Lua\5.1\lua\date.luac'rn no file '.\date.dll'rn no file 'D:\Backup\Visual Studio 2008\Projects\luatest\luatest\bin\x86\Debug\date.dll'rn no file 'D:\Backup\Visual Studio 2008\Projects\luatest\luatest\bin\x86\Debug\loadall.dll'rnrnrn为什么呢,怎么解决
lua和c++的交互问题
我需要在c++中调用lua脚本中的函数,在c++中给lua脚本函数传递一个参数,希望在lua脚本函数中对该参数修改,并且在c++中的该变量的值也修改了,简单的说就是,在c++中的某个变量,希望可以在lua脚本中修改其值,并且在c++代码中可以得到该变化。(不用返回值)rn例如:rnlua脚本中rnfunction f(a)rna = 10;rnendrnrn我想lua是不是可以往栈中压一个变量,这个变量是指向另外一个变量的地址,然后在这个脚本中修改这个变量指向的地址的值呢?rnrn【备注:】rn其实我是想在lua脚本中进行创建和修改图形界面(mfc),在自己做实验的时候rnlua脚本如下:rnrnfunction func_window(window)rn x = window:DoModal()rn return windowrnendrnrn我在c++程序中把CWindow类型的参数传到lua的栈上,并且将m_pMainWnd 的值赋值为lua返回的值,结果界面显示了但是在程序退出的时候pThread->m_pMainWnd->DestroyWindow();出错了,不知大家有何建议没?rn
Lua与C/C++交互函数问题
初学lua,遇到注册C/C++交互函数问题 在lua与C/C++交互时,C/C++的注册Lua函数若是一个有返回类型(压栈)而不是获取类型的时候应该返回1而不是返回0,否则会出现在Lua中值为nil(空) 不太明白为什么事这样,如果有知道的大神,麻烦讲解下 如: 应该是 1 2 3 4 5 6
lua与 C交互问题,请教各位
各位好,我的lua程序是test.luarnfunction mytest()rn local i=0;rn local luasql = require "luasql.mysql"rn -- create environment objectrn env = assert (luasql.mysql())rn -- connect to data sourcern con = assert (env:connect("mylct", "root", "hjzx", "127.0.0.1", 3306))rnrn -- retrieve a cursorrn cur = assert (con:execute"SELECT id,pos,offset,type from analog_info") --获取数据rn -- print all rowsrn row = cur:fetch (, "a") -- the rows will be indexed by field names --显示出来rn while row dorn print(string.format("%02d id: %d, pos: %d type:%s",i, row.id, row.pos,row.type))rn i=i+1;rn row = cur:fetch (row, "a") -- reusing the table of resultsrn endrn print "this is the test";rn -- close everythingrn cur:close()rn con:close()rn env:close()rnendrn我的C程序是rn[code=c]#include rn#include rn#include rn#include rnrn#include "/usr/local/include/lua.h"rn#include "/usr/local/include/lualib.h"rn#include "/usr/local/include/lauxlib.h"rnrnint main(int argc,char**argv)rnrn int ret = 0 ;rn char sc[50] = "test.lua";rnrn lua_State * l = luaL_newstate() ; //创建lua运行环境rn if ( l == NULL ) rn printf("luaL_newstat() failed\n");rn return 1;rn rn luaL_openlibs(l);rn ret = luaL_loadfile(l,sc) ; //加载lua脚本文件rn if ( ret != 0 ) rn printf("luaL_loadfile failed: %s\n",lua_tostring(l,-1));rn return 1;rn rn lua_pcall(l,0,0,0);rn lua_getglobal(l,"mytest");rn if(1 == (ret = lua_isfunction(l,-1)))rn rn ret = lua_pcall(l,0,0,0) ;rn if ( ret != 0 ) printf("lua_pcall failed[%d]:%s\n",ret,lua_tostring(l,-1)) ;rn rn lua_close(l) ; //释放lua运行环境rn return 0 ;rn[/code]rn使用GCC进行编译rngcc -o sql -g -L/usr/local/lib -I/usr/local/include /usr/local/lib/liblua.a -ldl -lm rn执行./sqlrn总是崩溃,通过gdb看到的信息是rnProgram terminated with signal 11, Segmentation fault.rn#0 0x00fc089b in newkey (L=0x949f008, t=0x94a7240, key=0x949f29c) at ltable.c:426rn426 gkey(mp)->value = key->value;rn(gdb) btrn#0 0x00fc089b in newkey (L=0x949f008, t=0x94a7240, key=0x949f29c) at ltable.c:426rn#1 0x00fb7fe5 in lua_rawset (L=0x949f008, idx=2) at lapi.c:682rn#2 0x00fb6783 in cur_fetch (L=0x949f008) at src/ls_mysql.c:238rn#3 0x0804d124 in luaD_precall (L=0x949f008, func=0x949f260, nresults=1) at ldo.c:320rn#4 0x08055b21 in luaV_execute (L=0x949f008, nexeccalls=1) at lvm.c:591rn#5 0x0804d5c0 in luaD_call (L=0x949f008, func=0x949f23c, nResults=0) at ldo.c:378rn#6 0x0804a941 in f_call (L=0x949f008, ud=0xbfa63c44) at lapi.c:809rn#7 0x0804ccb7 in luaD_rawrunprotected (L=0x949f008, f=0x804a920 , rn ud=0xbfa63c44) at ldo.c:116rn#8 0x0804cd1f in luaD_pcall (L=0x949f008, func=0x804a920 , u=0xbfa63c44, rn old_top=12, ef=0) at ldo.c:464rn#9 0x0804a797 in lua_pcall (L=0x949f008, nargs=0, nresults=0, errfunc=0) at lapi.c:830rn#10 0x080497ef in main (argc=2, argv=0xbfa63d64) at test.c:52rn在网上查找了一些资料,说是模块被加载了2次所导致,在我的lua程序中也只有local luasql = require "luasql.mysql"。rn请各位高手给点提示。
在LUA与C交互中遇到的问题
(1)C函数的参数类型是自定义的,比如是typedef的enum形式的。 (2)C函数有返回值,那么lua调用C如何处理?
lua与C交互(7):C函数管理
(1)将要调用的函数封装成一个模块 例如我们要用C封装一个数学模块给lua调用,lua中调用的代码为 sum = mymath.add(1, 3) sub = mymath.sub(4, 2) print(sum, sub) CC代码为: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&g...
linux下安装lua 于c++交互
最近这两天需要弄清楚C++和lua间相互调用和数据传递,废话不多说,直接上过程。         首先是环境环境,Linux(Debian),安装lua,注意需要管理员权限。 sudo apt-get install lua5.2 安装完后输入lua或者lua -v 严重是否安装成功以及安装的版本,当然,有了lua运行环境还不够我们还需要安装lua开发库既然我们安装的是lua5.2那么开发...
lua和c交互用到的c api介绍
lua和c进行数据换时,使用堆栈,相关的操作接口如下: 1.压入元素 void lua_pushnil (lua_State *L);  //压入空值到栈中 void lua_pushboolean (lua_State *L, int bool); //布尔 void lua_pushnumber (lua_State *L, double n); //double v
C与Lua交互——在C和Lua之间相互传递数据
        C与Lua交互                    ——在C和Lua之间相互传递数据,并以此操作SQlite3数据库        使用Lua来操作Sqlite3数据库的过程,相比直接在C/C++下操作,简单得多。在嵌入式开发过程中,使用Sqlite3来管理系统中的大量数据,是一种非常成熟的做法;将Lua 和Sqlite3结合起来的开源技术Lua Sqlite3,就显得非常适合快...
lua与C交互(4):C调用lua函数
C调用lua中的函数有几种情况: (1)lua函数无参数无返回 (2)lua函数有参数无返回 (3)lua函数有参数有返回(包含返回多个参数) (4)lua函数在lua表中 C中调用lua函数有一个主要的宏: lua_pcall(L,n,r,f),n为lua函数的参数个数,r为lua函数的返回值个数,f暂时不用理会。 完整的代码如下: lua代码: print("print f...
C与Lua交互之将C结构体组成table传递到Lua
概述前面的Lua与C交互之函数注册中讲述了怎么将C函数注册到Lua中让Lua使用。当Lua中调用C提供的获取数据的接口时,C怎么将多个结构体类型转换成Lua的嵌套table类型呢?下面通过一个例子来讲解例子详解C数据类型 typedef struct student { int age; ///&amp;lt; 年龄 int grade; ///&amp;lt; 年级 char name[32];...
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池