首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当命令行应用程序调用clGetDeviceID时,如何解决“查找节点潜在包装包包错误”?

当命令行应用程序调用clGetDeviceID时,如何解决“查找节点潜在包装包包错误”?
EN

Stack Overflow用户
提问于 2022-02-18 04:30:03
回答 1查看 1.4K关注 0票数 1

我在macOS上运行了一个命令行应用程序(蒙特雷,但这可能与此无关),它调用了一个使用OpenCL的库。当调用clGetDeviceIDs(..., CL_DEVICE_TYPE_GPU, ..., ...)时,在OpenCL初始化过程中,会将一条消息打印为标准错误,全文如下:

代码语言:javascript
运行
复制
2022-02-18 12:31:55.709016+0900 toktx[70551:23725709] [default] error finding potential wrapper bundle for node <FSNode 0x101a590a0> { isDir = ?, path = '<path to my app>' }: Error Domain=NSOSStatusErrorDomain Code=-10811 "kLSNotAnApplicationErr: Item needs to be an application, but is not" UserInfo={_LSLine=1579, _LSFunction=wrapperBundleNodeForWrappedNode}

这不是由库打印的,而是由OpenCL实现或macOS打印的。我正在使用macOS OpenCL框架。消息中提到的"LS“是LaunchServices。

然而,尽管消息初始化成功,但是将未来自被测试应用程序或库的消息打印到stderr将使跨平台CI测试更加困难。

我不想为我的命令行应用程序创建一个假包。还有其他方法来阻止OpenCL/系统抱怨吗?

EN

回答 1

Stack Overflow用户

发布于 2022-02-18 16:03:59

您可以尝试将一个Info.plist直接嵌入到可执行二进制文件中。我不知道这是否会解决你的问题,但它确实允许程序更像一个应用程序。

在Xcode中,创建一个新的Info.plist文件,然后在命令行应用程序目标的Build中,需要将“创建二进制Info.plist节”设置设置为“是”,并在"Info.plist文件“设置中指定Info.plist的(本地)路径。

我认为在这个虚拟的Info.plist文件中不需要Info.plist;CFBundleIdentifierCFBundleVersionCFBundleShortVersionString可能就足够了。

显然,这仍然没有给您的可执行文件一个实际的包装包,因此错误可能不会消失。

另一种选择是简单地将可执行文件作为虚拟包(New -> macOS -> Bundle)中的一个资源,用于实际重要的环境,而不是将其转换为一个完整的应用程序包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71168389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档