Проблема:Куда отправился lua_pcall? (Lua 5.2.0 на OSX Lion)
$ clang++ -L../lib/osx/ -I../include/ -o test Script.cpp Main.cpp Verbose.cpp -llua -lUnitTest++
Undefined symbols for architecture x86_64:
"_lua_pcall", referenced from:
LuaSystem::dostring(char const*) in Script-EgY0dM.o
(maybe you meant: _lua_pcallk)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Давайте посмотрим на мой Lua сборки:
$ cd src/
[email protected](Jun 09 02:41:58)[~/Downloads/lua-5.2.0/src]
$ ls
Makefile lcorolib.c ldump.o llex.o lopcodes.o ltable.c luac.c
lapi.c lcorolib.o lfunc.c llimits.h loslib.c ltable.h luac.o
lapi.h lctype.c lfunc.h lmathlib.c loslib.o ltable.o luaconf.h
lapi.o lctype.h lfunc.o lmathlib.o lparser.c ltablib.c lualib.h
lauxlib.c lctype.o lgc.c lmem.c lparser.h ltablib.o lundump.c
lauxlib.h ldblib.c lgc.h lmem.h lparser.o ltm.c lundump.h
lauxlib.o ldblib.o lgc.o lmem.o lstate.c ltm.h lundump.o
lbaselib.c ldebug.c liblua.a loadlib.c lstate.h ltm.o lvm.c
lbaselib.o ldebug.h linit.c loadlib.o lstate.o lua lvm.h
lbitlib.c ldebug.o linit.o lobject.c lstring.c lua.c lvm.o
lbitlib.o ldo.c liolib.c lobject.h lstring.h lua.h lzio.c
lcode.c ldo.h liolib.o lobject.o lstring.o lua.hpp lzio.h
lcode.h ldo.o llex.c lopcodes.c lstrlib.c lua.o lzio.o
lcode.o ldump.c llex.h lopcodes.h lstrlib.o luac
[email protected](Jun 09 02:41:59)[~/Downloads/lua-5.2.0/src]
$ nm liblua.a | grep _lua_pcall
115:0000000000001a30 T _lua_pcallk
116:0000000000003b40 S _lua_pcallk.eh
1563: U _lua_pcallk
1839: U _lua_pcallk
[email protected](Jun 09 02:42:12)[~/Downloads/lua-5.2.0/src]
$ nm *.o | grep _lua_pcall
115:0000000000001a30 T _lua_pcallk
116:0000000000003b40 S _lua_pcallk.eh
597: U _lua_pcallk
977: U _lua_pcallk
2630: U _lua_pcallk
2760: U _lua_pcallk
Почему _lua_pcall
не существует? Документ 5.2, кажется, говорит, что pcallk делает то же самое, что и pcall, но имеет преимущество в том, что он может уступить, но pcall все равно должен быть доступен ...
ОБНОВЛЕНИЕ: Я только что понял, что я пытаюсь установить ссылку на 5.2 с использованием старых (5.1 ?) заголовки ... Кто-нибудь знает, где есть список, в котором говорится, какие заголовки необходимы? Мне не нужны все заголовки из источника Lua.
Мы можем заключить, что мы видели здесь, что в 5.2 pcall реализовано с использованием _lua_pcallk
.
Отличный ответ, спасибо. –