Почему Lua сообщает, что lua_pushlstring не определена? - PullRequest
2 голосов
/ 24 июня 2010

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

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 $@

Я знаю, lua_pushliteral - это просто макрос, который вызывает lua_pushlstring, так что именно отсюда и возникает ошибка. Кажется, ни один из вариантов push_* не работает вообще. Я подозреваю, что что-то не так с моим Makefile.

Есть идеи?

1 Ответ

2 голосов
/ 24 июня 2010

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

...