2011-07-12 7 views
1

私はLabWindows/CVI環境内でWindows 7、64ビットOS上に構築したいANSI Cソースコードを生成するためにgSoapを使用しています。 fdはファイル記述子であり、モードは_O_TEXTまたは_O_BINARYのいずれかに設定されているファイル(またはストリーム)変換モードをバイナリまたはテキストに設定するために、LabWindows/CVIに_setmode()と同様の機能がありますか?

int _setmode (int fd, int mode); 

:のgSOAPファイルstdsoap2.cは、次のプロトタイプを持つ_setmode()関数の複数のインスタンスを含みます。

奇妙なことに、LW/CVIにMicrosoftのSDKへのインターフェイスが含まれていても、このSDKには、SDKへのヘルプリンクに機能に関する情報が含まれていても、_setmodeのプロトタイプは含まれていません。

ファイル(またはストリーム)変換モードをテキストまたはバイナリに設定するために使用されるLabWindows/CVIの方法を知っている人はいませんか?あなただけのASCIIまたはバイナリのいずれかのファイルを開きたいよう

おかげで、 Ryyker

+0

ええと、私はNO =と思われます。 – ryyker

答えて

0

はそれが鳴ります。したがって、_setmode()のインスタンスをhereのようにLW/CVI OpenFile()関数に置き換えることができます。バイナリとしてファイルを読む短い例です。

char filename = "path//to//file.ext" 
int result; 
result = OpenFile(filename, VAL_READ_ONLY, VAL_OPEN_AS_IS, VAL_BINARY); 

if (result < 0) 
    // Error, notify user. 
else 
    // No error. 

またページから、この警告に注意してください:

注意をWindowsのSDKものOpenFile関数が含まれています。 にwindows.hが含まれていて、formatio.hが含まれていない場合は、OpenFileを呼び出すと というエラーが発生します。

+0

長い間遅れて申し訳ありませんが、ここでループを閉じたいと思います。私は長い間問題を解決してきました。私はあなたの提案を使用することができなかった理由は(ほとんどのシナリオでは、それは良い提案でした)私はgsoapコードジェネレータを使用しているため、毎回問題を複雑にすることなく手動で自動生成コードを変更することはできません我々は再生成する。私が最後にやったことは、以下の簡単な答えに挙げられています。 – ryyker

1

この質問のループを閉じる。
上記の私のコメントに記載されている理由のために、唯一の答えを使用することができませんでした。
私はSDKを使用しましたが、OpenFile関数の別のバージョンを選択するのではなく、自動コードジェネレータが使用する関数の使用をサポートすることでした。_setmode()しかし、私の主要な開発環境(LabWindows/CVI)によって。

ので、要約すると、私の解決策は私に_setmodeの定義を与えるためにSDKを含めるだけでなく、私の非自動生成されたコードに次のようになった:

#define _O_TEXT   0x4000 /* file mode is text (translated) */  
#define _O_BINARY  0x8000 /* file mode is binary (untranslated) */ 

ので、警告としていますこの投稿は私が実際にしたことを説明しています、私は答えとして答えを提供するつもりですボールパークにあったように答えとして提供されます。ありがとう@ギャリー。

関連する問題