我在Mac OS X中尝试用C ++编写lua脚本。我找到了一种让程序返回当前工作目录的方法。这对getcwd没有问题,但后来我做了一件事:
我的foo.lua只停留在它的初始路径上。当我编译程序时,它不会被复制到build / Debug目录。当然,我可以在那里抓住我的剧本,但那是不切实际的。 XCode或任何IDE应该将资源带到构建区域。 XCode使用iPhone应用程序自动执行此操作,但这似乎是一个不同的情况。对于这种情况,如何命令XCode将相应的资源放在构建目录中?
int main (int argc, char * const argv[]) {
...
...
luaL_dofile(luaVM,"/Users/yourNameHere/Desktop/LuaSandbox/LetsTryLua/foo.lua");
//typing the whole absolute path here is just ugly and impractical.
...
...
printf("working directory: %s", buffer);
//output is: working directory: /Users/yourNameHere/Desktop/LuaSandbox/LetsTryLua/build/Debug
...
...
答案 0 :(得分:2)
因为你使用.lua文件作为资源,我怀疑它不被识别为标准资源类型,因此它没有被自动复制。您应该可以通过向目标添加额外的Copy Bundle Resources构建步骤,然后在项目视图中将文件添加到其中来实现此目的。
答案 1 :(得分:2)
如果您正在创建一个非捆绑的命令行工具,那么永远不会是一个好的解决方案。如果您正在创建一个常规应用程序,那么上述解决方案将起作用,但您将不得不停止假设您的工作目录在任何时间点都设置为任何具有远程意义的内容,并使用适当的方法来查找存储的资源在你的包中。
答案 2 :(得分:2)
您可能希望使用NSBundle API来查找它,而不是硬编码Lua脚本的路径:
NSBundle * mainNSBundle = [NSBundle mainBundle]; NSString * luaFilePath = [mainNSBundle pathForResource:@“foo” ofType:@ “LUA” inDirectory:NULL forLocalization:NULL];
luaL_dofile(luaVM,[luaFilePath UTF8String]);
这将在bundle的文件夹中找到它(如果您按照上面的海报建议将“Copy Bundle Resources”构建步骤添加到目标中。