gpt4 book ai didi

c++ - Xcode 项目源文件自动复制

转载 作者:行者123 更新时间:2023-11-30 05:14:34 24 4
gpt4 key购买 nike

我目前在 xcode 上遇到 c++ 问题。当我执行 fopen("verShader.vsh","r") 时,它返回 NULL 指针。

如果我将 verShader.vsh 放入/Users/apple/Library/Developer/Xcode/DerivedData/HollowWorld‌ -hghymrkhtbuguoaiwgp‌ tundpakuz/Build/Prod‌ ucts/Debug,fopen() 将起作用。但是,文件位于与 main.cpp 相同的目录中,即/Users/apple/Developer/C++/HelloWorld/HelloWorld。

无论如何,当我构建项目时,它是否可以自动将“verShader.vsh”复制到执行文件的目录? enter image description here

最佳答案

it returns NULL pointer as the working space is .../DerivedData/... while the "verShader.vsh" is put in the dir of main.cpp

那是因为您在使用文件名“verShader.vsh”时没有提供文件路径。 Mac(和 iOS)应用程序包具有特定的结构,除了可执行文件或工作目录之外,所有资源都存储在特定的子目录中。

Is there anyway that when I build the project it could automatically copy "verShader.vsh" to the dir of execution file?

这是错误的方法——您仍然需要知道要复制的文件的路径,一旦您知道了,您还不如就地阅读它而不是复制它。在 Objective-C 或 Swift 中,这很容易:

NSString *path = [[NSBundle mainBundle] pathForResource:@"verShader"ofType:@"vsh"];

在 C++ 中,您可以使用 Core Foundation 做同样的事情:

CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef url = CFBundleCopyResourceURL(mainBundle, CFSTR("verShader"), CFSTR("vsh"), NULL);
char path[255]; // space for the path
Boolean success = CFURLGetFileSystemRepresentation(url, true, path, 255);

(警告:自从我需要使用 Core Foundation 以来已经有一段时间了,所以使用上面的代码作为起点,但不要害羞自己检查 docs 并进行任何必要的更正。)

一旦有了路径,就可以将它与常用的 C/C++ 文件例程一起使用,例如 fopen()

关于c++ - Xcode 项目源文件自动复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43390949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com