C++ OpenCL 1.1使用C+的未定义引用+;包装纸

C++ OpenCL 1.1使用C+的未定义引用+;包装纸,c++,eclipse,gcc,cygwin,opencl,C++,Eclipse,Gcc,Cygwin,Opencl,我正在尝试使用Cygwin Gcc/G++编译器在Eclipse下编译一个OpenCL项目,我得到了一些未定义的OpenCLAPI函数引用。我看到了很多关于这个问题的线索,我尝试了建议的解决方案,但我仍然有这些错误 基本上,我的代码只是检索有关我使用的平台和设备的OpenCL信息,所以我不在这里提供,但如果您愿意,我可以提供(即使我认为这不是很有趣) 这是我的makefile: RM := rm -rf OpenCLEnvInfos.o: ../OpenCLEnvInfos.cpp

我正在尝试使用Cygwin Gcc/G++编译器在Eclipse下编译一个OpenCL项目,我得到了一些未定义的OpenCLAPI函数引用。我看到了很多关于这个问题的线索,我尝试了建议的解决方案,但我仍然有这些错误

基本上,我的代码只是检索有关我使用的平台和设备的OpenCL信息,所以我不在这里提供,但如果您愿意,我可以提供(即使我认为这不是很有趣)

这是我的makefile:

RM := rm -rf

OpenCLEnvInfos.o: ../OpenCLEnvInfos.cpp
       g++ -IINCLUDE_DIR1 -IINCLUDE_DIR2 -g3 -Wall -c ../OpenCLEnvInfos.cpp -o     OpenCLEnvInfos.o
       @echo ' '

OpenCL_infos.o: ../OpenCL_infos.cpp    
       g++ -IINCLUDE_DIR1 -IINCLUDE_DIR2 -g3 -Wall -c ../OpenCL_infos.cpp -o OpenCL_infos.o
       @echo ' '

# All Target
all: OpenCLEnvInfos.exe

# Tool invocations
OpenCLEnvInfos.exe: OpenCLEnvInfos.o OpenCL_infos.o
       g++ -o OpenCLEnvInfos.exe OpenCLEnvInfos.o OpenCL_infos.o -LOpenCL -LGAL-fb
       @echo ' '

# Other Targets
clean:
       -$(RM) OpenCLEnvInfos.o OpenCL_infos.o OpenCLEnvInfos.d OpenCL_infos.d     OpenCLEnvInfos.exe
       @echo ' '
我尝试了一切(链接命令中的Libs顺序),-l而不是-l(但编译器没有找到它们)。。。Eclipse makefile生成会发生更多错误,这就是为什么我必须重写它

我希望有人能给出答案:p


巴蒂斯特

您误用了编译器开关。有关更多信息,请阅读GCC手册

使用
-L
您应该提供要搜索库的目录的路径。在您的案例中,位于
libOpenCL.a
OpenCL.a
的位置。例如:

-LD:/Libraries/OpenCL/lib
使用
-l
指定要链接的库。在您的情况下,这将是
libOpenCL.a
OpenCL.a
。像这样:

-lOpenCL

顺序是正确的。换句话说,如果这些
*.o
文件依赖于
-l
指定的库,则应在所有
*.o
文件(在链接阶段调用
g++
时)之后保留这些
-l
开关,你的情况确实是这样。

问题是我以前在-lLIB1和-lLIB2(它们是libOpenCL.so和libGAL fb.so)中有这个-LLIB_目录,但我的编译器找不到它们。然后我尝试了-L,我再也没有错误消息了。这很奇怪,因为互联网上的任何帖子都说它应该是libOpenCL的-lOpenCL。所以,我从来没有这样做过……我明天会试试(这是为了我的工作:/),我一到家就问了。如果我找到解决办法,我会告诉你!!好的,所以我使用了另一个编译器(它适用于arm9电子板上的嵌入式linux),它与-l前缀配合使用,使用我的共享库效果很好。不管怎样,我用cygwin提供的g++编译器再试了一次,但没有像昨天那样工作。我找到了这个帖子,明天我会试试(我工作时还没有上网>