2011-06-23 1 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); 

をOpenCLのカーネルファイルを開いている間、私はこのコードで入力し、私はそれがfopenのだが推奨されていませんというエラーを得た、私は、私は、フォーラムすなわちからの助けを得ることによって、問題を解決プリプロセッサ定義に_CRT_SECURE_NO_WARNINGSを追加しました。ATIストリームOpenCLの:問題のVisual Studioで2010

しかし、私はまだカーネルファイルを読み込めません。 「いいえ」というエラーや警告があります。 fpの値はゼロです これを行う代替方法はありますか?事前に

おかげ

+1

ファイルが存在し、正しい場所にありますか?あなたの質問以外には、OpenCLや、指定されたタグはほとんどありません。 – Bart

+0

@Bartはい、同じプロジェクトフォルダにファイルが存在します。私は完全なパスを指定しようとしましたが、動作しませんでした。ええ、この質問は主にファイルに関連しています。申し訳ありません。 @Ludwig私はそれを試みた、fpの値は0であり、fseekの値も0です。正しい方法はATIのOpenCL SDKサンプルで与えられていますが、私はこれを初めて知っているので正しく追うことができません。 –

+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をチェックすることによって、エラーコードを取得することができます。ユーザー読める文字列はstrerrorをして得たことができます。

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

うまくいけば、これはあまりにも、Windows上で動作します。

関連する問題