我只是想尝试在 Windows 下使用 OpenCL。
摘要:当我尝试编译(使用命令)出现“ undefined reference to
”错误。gcc my.o -o my.exe -L "C:\Program Files (x86)\AMD APP\lib\x86_64" -l OpenCL
我的代码
#include <CL/cl.h>
#include <stdio.h>
int main(void) {
cl_platform_id platform;
int err;
err = clGetPlatformIDs(1, &platform, NULL);
if(err < 0) {
perror("There's No Platform!");
exit(1);
}
/* Some more code... */
system("PAUSE");
}
生成文件
all: addition
addition:
gcc -c -I "C:\Program Files (x86)\AMD APP\include" my.c -o my.o
gcc my.o -o my.exe -L "C:\Program Files (x86)\AMD APP\lib\x86_64" -l OpenCL
使用过的程序
- MinGW的
gcc
- 视觉工作室的
nmake
- AMD 的OpenCL™ APP SDK(我从那里获取 OpenCL 库和
CL.h
文件)
APP SDK的文件夹结构
%>tree /F "C:\Program Files (x86)\AMD APP\lib\x86_64"
Auflistung der Ordnerpfade
Volumeseriennummer : D2DC-D765
C:\PROGRAM FILES (X86)\AMD APP\LIB\X86_64
libOpenCL.a
OpenCL.lib
OpenVideo64.lib
Es sind keine Unterordner vorhanden
%>tree /F "C:\Program Files (x86)\AMD APP\include"
Auflistung der Ordnerpfade
Volumeseriennummer : D2DC-D765
C:\PROGRAM FILES (X86)\AMD APP\INCLUDE
├───CAL
│ cal.h
│ calcl.h
│ cal_ext.h
│ cal_ext_counter.h
│ cal_ext_d3d10.h
│ cal_ext_d3d9.h
│
├───CL
│ cl.h
│ cl.hpp
│ cl_d3d10.h
│ cl_ext.h
│ cl_gl.h
│ cl_gl_ext.h
│ cl_platform.h
│ opencl.h
│
└───OpenVideo
OpenVideo.h
OVDecode.h
OVDecodeTypes.h
OVEncode.h
OVEncodeTypes.h
错误信息
gcc addition.o -o addition.exe -L "C:\Program Files (x86)\AMD APP\lib\x86_64" -l OpenCL
addition.o:addition.c:(.text+0x2d): undefined reference to `clGetPlatformIDs@12'
addition.o:addition.c:(.text+0x83): undefined reference to `clGetDeviceIDs@24'
addition.o:addition.c:(.text+0xc2): undefined reference to `clGetDeviceIDs@24'
collect2: ld returned 1 exit status
NMAKE : fatal error U1077: "C:\prog-x86\MinGW\bin\gcc.EXE": Rückgabe-Code "0x1"
Stop.
我的问题
我的问题很简单:
- 为什么我的代码没有按预期编译?
- 我能做些什么来摆脱这个问题?
谢谢。
更新:删除空格后的错误消息,如@codaddict 的回答中所述。
(生成文件)
all: addition addition: gcc -c -I "C:\prog-x86\AMD-APP\include" addition.c -o addition.o gcc addition.o -o addition.exe -LC:\prog-x86\AMD-APP\lib\x86_64 -lOpenCL
(贝壳数据)
%>nmake Microsoft (R) Program Maintenance Utility, Version 11.00.50727.1 Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten. gcc -c -I "C:\Program Files (x86)\AMD APP\include" addition.c -o addition.o addition.c: In function 'main': addition.c:14:9: warning: incompatible implicit declaration of built-in function 'exit' [enabled by d efault] addition.c:23:9: warning: incompatible implicit declaration of built-in function 'exit' [enabled by d efault] gcc addition.o -o addition.exe -LC:\prog-x86\AMD-APP\lib\x86_64 -lOpenCL addition.o:addition.c:(.text+0x2d): undefined reference to `clGetPlatformIDs@12' addition.o:addition.c:(.text+0x83): undefined reference to `clGetDeviceIDs@24' addition.o:addition.c:(.text+0xc2): undefined reference to `clGetDeviceIDs@24' collect2: ld returned 1 exit status NMAKE : fatal error U1077: "C:\prog-x86\MinGW\bin\gcc.EXE": Rückgabe-Code "0x1" Stop. %>