Lua 호출 C 함수:tolua+의 사용
3184 단어 lua
tolua++홈 페이지:http://www.codenix.com/~tolua/
1.tolua++를 설치 하고 제 가 사용 하 는 버 전 은 1.0.93 입 니 다.INSTALL 문서 설명 에 따라 컴 파일 하고 설치 합 니 다.tolua+를 컴 파일 하려 면 먼저 scons 를 설치 하고 주 소 를 다운로드 해 야 합 니 다.http://www.scons.org/download.phprpm 패키지 로 설치,rpm-ivh scons-2.1.0-1noarch.rpm 으로 scons 를 설치 한 후,tolua++를 tolua+디 렉 터 리 에서 scons 를 실행 하여 설 치 를 완료 합 니 다.
2.톨 루 아+톨 루 아+의 src 폴 더 에 test 디 렉 터 리 가 있 는 방법 을 사용 하 는 방법 을 보 여 줍 니 다.lua 를 사용 하여 C/C++를 호출 하 는 방법 을 보 여 줍 니 다.그러나 가장 간단 한 tarray 테스트,assert 는 실 패 했 습 니 다.
test.pkg 파일 을 정의 합 니 다.tolua+는 이 파일 을 사용 하여 lua 호출 C 함수 의 실현 파일 을 생 성 합 니 다.pkg 파일 형식 은.h 파일 과 비슷 합 니 다.일반적인 상황 에서 C 함수 만 설명 하고 test.h 파일 을 포함 하 며 test.c 는 구체 적 인 업 무 를 수행 하 는 파일 입 니 다.
interface.pkg 파일
$#include "interface_c.h"
int add(int x, int y);
int sub(int x, int y);
module log
{
void write_log(int level, char* msg);
}
이 pkg 는 add,sub,log 모듈 의 write 를 정의 합 니 다.log 인터페이스.
interface_c.h
int add(int x, int y);
int sub(int x, int y);
//log
void write_log(int level, char* msg);
interface_c.cpp 구현:
int add(int x, int y)
{
return x + y;
}
int sub(int x, int y)
{
return x - y;
}
void write_log(int level, char* msg)
{
log(level, msg);
}
이 몇 개의 파일 이 있 으 면 우 리 는 lua 에서 C 의 함 수 를 호출 할 수 있 습 니 다.그 다음 에는 C 함 수 를 호출 하 는 cpp 파일 을 생 성 해 야 합 니 다.
tolua+-n interface-o interface.cpp interface.pkg 은 interface.cpp 를 생 성 합 니 다.긴 내용 은 상관 하지 않 아 도 됩 니 다.바로 모든 함수 의 검사 매개 변수,스 택 출 스 택 등 작업 입 니 다.
lua 테스트 쓰기:[zrs@local5 ~/lua/test2]$ cat test.lua x = add(1, 2) print(“add result = ” .. x)
y = sub(20, 10) print(“sub result = ” .. y)
log.write_log(1, “test log”)
[zrs@local5 ~/lua/test2]$ ll total 28 -rwxr-xr-x 1 zrs www 218 Feb 28 18:33 interface_c.cpp -rwxr-xr-x 1 zrs www 99 Feb 28 18:26 interface_c.h -rwxr-xr-x 1 zrs www 3167 Feb 28 18:25 interface.cpp -rwxr-xr-x 1 zrs www 141 Feb 28 18:24 interface.pkg -rwxr-xr-x 1 zrs www 319 Feb 28 18:30 main.cpp -rwxr-xr-x 1 zrs www 1161 Feb 28 18:12 Makefile -rw-r–r– 1 zrs www 118 Feb 28 18:33 test.lua
main.cpp
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include "interface_c.h"
int tolua_interface_open (lua_State*);
int main (void)
{
lua_State* L = lua_open();
luaopen_base(L);
tolua_interface_open(L);
int ret = luaL_dofile(L,"test.lua");
lua_close(L);
return 0;
}
컴 파일:
컴 파일 옵션 은 tolua+-ltoua++5.1 테스트 를 연결 해 야 합 니 다.
[zrs@local5 ~/lua/test2]$ ./simpletest add result = 3 sub result = 10 log level[1]:test log
테스트 통과.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Neovim을 위한 자동 완성NeoVim으로 생산성을 높일 수 있는 가장 멋진 기능 중 하나는 자동 완성이므로 성능에 따라 플러그인을 선택할 수 있습니다. YouCompleteMe Coc.nvim 이 플러그인은 사용하기 좋지만 Javascrip...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.