- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
问题:
$ 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/
stevenlu443@steven-mba(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
stevenlu443@steven-mba(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
stevenlu443@steven-mba(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.1?) header 链接到 5.2...有人知道哪里有一个列表说明哪些 header 是必需的吗?我不需要 Lua 源代码中的所有 header 。
从我们在这里看到的可以推断,在 5.2 中 pcall 是使用 _lua_pcallk
实现的。
最佳答案
要编译使用 Lua C API 的程序,您需要包含 lua.h
,通常还包含 lauxlib.h
,有时还包含 lualib.h
.
当你更改 Lua 的版本时,比如从 5.1 到 5.2,你需要重新编译你的程序。当您更改相同版本的发布时,例如从 5.1.4 到 5.1.5,您不需要重新编译,只需重新链接。
当然,在所有情况下,请确保您使用一致的头文件和库,即不要混用来自不同版本或发行版的头文件和库。
关于c++ - lua_pcall 去哪儿了? (OSX Lion 上的 Lua 5.2.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959017/
我通常将JS和CSS Assetic Assets 放置在DefaultBundle中,但我认为放置它们的最佳位置是在app / Resources / public /(js | css)文件夹中。
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一名优秀的程序员,十分优秀!