C++ OpenCL 1.1使用C+的未定义引用+;包装纸
我正在尝试使用Cygwin Gcc/G++编译器在Eclipse下编译一个OpenCL项目,我得到了一些未定义的OpenCLAPI函数引用。我看到了很多关于这个问题的线索,我尝试了建议的解决方案,但我仍然有这些错误 基本上,我的代码只是检索有关我使用的平台和设备的OpenCL信息,所以我不在这里提供,但如果您愿意,我可以提供(即使我认为这不是很有趣) 这是我的makefile: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
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++编译器再试了一次,但没有像昨天那样工作。我找到了这个帖子,明天我会试试(我工作时还没有上网>