와 루아 라이브러리의 함수를 호출, 그래서 나는나는 루아 라이브러리 런타임 전화를 시도하고 dlsym을
static int my_new(lua_State *L) {
printf("test_new");
}
LUALIB_API int luaopen_my(lua_State *L) {
static const luaL_Reg R[] =
{
{ "new", my_new },
{ NULL, NULL }
};
luaL_newmetatable(L,myNAME);
luaL_setfuncs(L,R,0);
lua_pushliteral(L,"version"); /** version */
lua_pushliteral(L,MYVERSION);
lua_settable(L,-3);
lua_pushliteral(L,"__index");
lua_pushvalue(L,-2);
lua_settable(L,-3);
return 1;
}
그래서 동적 라이브러리로 구축 C에서 루아 lib 디렉토리를 만들고, 내가 그 일을 전화를 시도하는 방법 :
void *handle;
lua_CFunction fnc_call;
handle = dlopen("mylib.so", RTLD_LOCAL | RTLD_LAZY);
if (!handle) {
printf("error call lib");
exit(-1);
}
fnc_call = (lua_CFunction) dlsym(handle, "luaopen_my");
if (fnc_call == NULL) {
printf("error call func");
exit(-1);
}
luaL_requiref(L, "my", fnc_call, 1);
lua_pop(L, 1);
하지만 내가 사용하는 루아 코드를 호출 할 때 세그먼트 오류가 있습니다. 내 프로그램에서 LIB 루아를 호출하는 방법을
test = my.new()
, 나는 그게 내 libs와 전화 일부 루아 경로와 루아 API를 내 LIB를 넣을 수 있습니다 알지만, dlopen을 사용하여 호출해야합니다.
감사합니다, 당신이 my_new
에서 값을 반환하지 않기 때문에, 기능이 일부 개체 (임의의 가능성 매우 높음) 번호가에 반환이 있다는 루아를 알려주는 임의의 값을 반환하는 것을 내기