LabWindows / CVI是否有类似于_setmode()的东西,用于将文件(或流)转换模式设置为二进制或文本?

时间:2011-07-12 22:07:41

标签: gsoap labwindows

我正在使用gSoap生成ANSI C源代码,我希望在Windows 7,64位操作系统的LabWindows / CVI环境中构建。 gSoap文件stdsoap2.c包含_setmode()函数的几个实例,其中包含以下原型:

int _setmode (int fd, int mode);

其中fd是文件描述符,mode设置为_O_TEXT或_O_BINARY。

奇怪的是,尽管LW / CVI包含微软SDK的接口,但即使SDK的帮助链接包含有关该功能的信息,该SDK也不包含任何包含的头文件中的_setmode原型。 / p>

是否有人知道LabWindows / CVI中用于将文件(或流)转换模式设置为文本或二进制文件的方法。

谢谢, Ryyker

2 个答案:

答案 0 :(得分:1)

关闭这个问题的循环。
由于上述评论中列出的原因,我无法使用唯一提供的答案 虽然我确实使用了SDK,但它不是选择不同版本的OpenFile函数,而是支持使用自动代码生成器使用的函数, _setmode()但是我的主要开发环境(LabWindows / CVI)不支持。

因此,总而言之,我的解决方案是包含SDK以给我定义_setmode以及在我的非自动生成代码中包含以下内容:

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

所以,有一点需要注意,这篇文章描述了我实际所做的事情,我将把@gary提供的答案标记为答案,就像在球场一样。谢谢@gary。

答案 1 :(得分:0)

听起来你只想打开一个ASCII或二进制文件。因此,您应该能够使用here所述的LW / CVI _setmode()函数替换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会出错。