我正在使用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
答案 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会出错。