2010-06-24 2 views
2

Мне удалось скомпилировать Lua 5.1.4 для Palm WebOS, и теперь я пытаюсь написать расширение для использования сервисов webOS от Lua. Однако, когда я пытаюсь загрузить свою библиотеку, сообщает Lua:Почему Lua сообщает, что lua_pushlstring не определена?

undefined symbol: lua_pushlstring 

Вот мой код:

#define LUA_LIB 
#include "lua.h" 
#include "lauxlib.h" 

static int hellopalm(lua_State *L) { 
    lua_pushliteral(L, "Hello, Palm!"); 
    return 1; 
} 

static const luaL_reg palmlib[] = { 
    { "hellopalm", hellopalm }, 
    { NULL, NULL } 
}; 

LUALIB_API int luaopen_palm(lua_State *L) { 
    luaL_register(L, "palm", palmlib); 
    return 1; 
} 

Вот мой Makefile:

LUADIR= ../lua-5.1.4/lua-webos 
CC= arm-none-linux-gnueabi-gcc 
CFLAGS= -O2 -Wall -shared -nostdlib -mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp 
INCLUDES= -I$(LUADIR)/include 
RM= rm -f 

LIBNAME= palmlib.so 
SOURCES= palmlib.c 

default: $(LIBNAME) 

clean: 
    $(RM) $(LIBNAME) 

$(LIBNAME): palmlib.c 
    $(CC) $(CFLAGS) $(INCLUDES) $(SOURCES) -o [email protected] 

Я знаю lua_pushliteral просто макрос звонит lua_pushlstring, так вот откуда исходит ошибка. Ни один из вариантов push_*, похоже, вообще не работает. Я подозреваю, что что-то не так с моим Makefile.

Любые идеи?

ответ

2

Вам нужно экспортировать символы API Lua, когда вы создаете свой интерпретатор Lua. В Linux флагами для gcc являются -Wl, -E; возможно, это работает и на вашей платформе.

+0

WebOS основан на Linux, так что сделал трюк! Благодаря! –

+2

Просто так, что мы знаем: при создании Lua делает 'make linux' работать из коробки в WebOS? – lhf