2011-06-23 70 views
0
FILE *fp; 
long filelen; long readlen; 
char* src; 
fp = fopen("OpenCLSource.cl","r"); 
fseek(fp,0L,SEEK_END); 
filelen = ftell(fp); 
rewind(fp); 
src = (char *) malloc(sizeof(char)*(filelen+1));  
readlen = fread(src,1,filelen,fp); 
src[filelen+1] = '\0'; 
fclose(fp); 

我在這段代碼中輸入了錯誤,將_CRT_SECURE_NO_WARNINGS添加到預處理器定義中。ATI Stream OpenCL:在Visual Studio 2010中打開opencl內核文件時出現的問題

但是,我仍然無法加載內核文件。有「沒有」的錯誤或警告。 fp的值爲零 有沒有其他方法可以做到這一點?

預先感謝

+1

您確定該文件存在且位置正確嗎?除此之外,您的問題與OpenCL或幾乎沒有指定的任何標籤無關。 – Bart

+0

@Bart,是的,該文件存在於同一個項目文件夾中,我甚至嘗試給出完整的路徑,它不起作用。是的,這個問題主要與檔案有關,對此抱歉。 @Ludwig我試過了,fp的值是0,fseek的值也是0.正確的方法在ATI的OpenCL SDK示例中給出,但由於我是新手,因此無法正確執行。 – 2011-06-24 06:26:26

+0

在fopen_s上查看http://msdn.microsoft.com/en-us/library/z5hh6ee9%28v=vs.80%29.aspx。也許它有幫助。我對Visual Studio不熟悉,但您的源代碼在Linux上運行。 –

回答

1

fopen是POSIX命令。對於Linux手冊頁告訴:

RETURN VALUE 
    Upon successful completion fopen(), fdopen() and freopen() return a FILE 
    pointer. Otherwise, NULL is returned and errno is set to indicate the error. 

我認爲這也適用於Windows實施。你可以通過檢查變量errno來獲得錯誤代碼。用戶可讀的字符串可以用字符串錯誤可以得到:

char *str = strerror(errno); 
printf("error: %s\n", str); 

我們希望,這適用於Windows,太。