OpenCL开发时host代码无法打开kernel.aocx二进制文件该如何解决
你的代码使用相对路径读取kernel.aocx,在bin目录执行./host时,程序的默认工作目录就是当前的bin目录,会直接在bin目录下查找kernel.aocx,而该文件实际存放在device目录,因此触发文件打开失败报错。
解决方法
- 修改文件路径参数
若你的项目中bin和device为平级目录,可将fopen的路径参数改为../device/kernel.aocx的相对路径形式,也可以直接填写kernel.aocx的绝对路径,即可准确定位到目标文件。 - 调整执行程序的工作目录
执行host程序前先切换到kernel.aocx所在的device目录,再通过相对路径调用host程序,执行命令为:cd ../device && ../bin/host - 移动文件位置
直接将device目录下的kernel.aocx复制到执行host程序的bin目录下,无需修改代码即可正常读取。
额外优化建议
你可以替换报错代码为perror打印更精准的错误信息,方便后续排查权限、路径等不同原因导致的文件打开失败问题:
if (fp == NULL) { perror("File error"); exit(1); }
内容的提问来源于stack exchange,提问作者JOJO
相关产品推荐
相关产品推荐

