未找到从头文件链接到的头文件。

发布于 2024-09-17 20:08:15 字数 1033 浏览 6 评论 0原文

我对 Nvidia 的 OpenCl/Cuda 框架有问题,但我认为这是一个 gcc 链接问题。

opencl_hello_world.c 示例文件使用以下头文件:

#include "../OpenCL/common/inc/CL/opencl.h"

opencl.h 使用这些头文件:

#include <../OpenCL/common/inc/CL/cl.h>
#include <../OpenCL/common/inc/CL/cl_gl.h>
#include <../OpenCL/common/inc/CL/cl_gl_ext.h>
#include <../OpenCL/common/inc/CL/cl_ext.h>

因此所有头文件都位于同一文件夹中。

然后,当我使用 gcc opencl_hello_world.c -std=c99 -lOpenCL 进行编译时,我收到以下错误消息:

error: ../OpenCL/common/inc/CL/cl.h: No such file or directory
error: ../OpenCL/common/inc/CL/cl_gl.h: No such file or directory
...

即使 cl.h 和其他头文件位于此文件夹中。

搜索完后,我将 opencl.h 中的包含内容更改为

   #include "cl.h"
   #include "cl_gl.h"

我在此处阅读的内容:gcc 找不到包含的标头

但是乱搞框架头文件似乎不是一个可行的方法?处理这个问题的正确方法是什么?

I have a problem with Nvidia's OpenCl/Cuda framework, but I think it is a gcc linking issue.

The opencl_hello_world.c example file uses following header file:

#include "../OpenCL/common/inc/CL/opencl.h"

with opencl.h using these header files:

#include <../OpenCL/common/inc/CL/cl.h>
#include <../OpenCL/common/inc/CL/cl_gl.h>
#include <../OpenCL/common/inc/CL/cl_gl_ext.h>
#include <../OpenCL/common/inc/CL/cl_ext.h>

So all the header files are in the same folder.

When I then compile with gcc opencl_hello_world.c -std=c99 -lOpenCL I get following error messages:

error: ../OpenCL/common/inc/CL/cl.h: No such file or directory
error: ../OpenCL/common/inc/CL/cl_gl.h: No such file or directory
...

Even though cl.h and the other header files are located in this folder.

Having searched SO, I then changed the includes in the opencl.h to

   #include "cl.h"
   #include "cl_gl.h"

how I have read here: gcc Can't Find a Included Header.

But messing around with the frameworks header files does not seem like the way to go? What would be the proper way to handle this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感情洁癖 2024-09-24 20:08:15

您同时使用 #include "" 形式和 #include <>,它们不在相同的路径中搜索。 "" 是您的项目本地的,-i 命令行指定为 gcc,<>是 -I 指定的 gcc 的“系统”路径。

您可能需要在 gcc 命令行中使用 -Ipath/to/includes 设置包含路径。

You're using both #include "" form and #include <>, which don't search in the same paths. "" is local to your project, and the -i command line specified to gcc, <> is the 'system' path specified by -I to gcc.

You probably need to set the include path with -Ipath/to/includes in gcc's command line.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文