none
xp 32bit _stati64 返回-1,win7 正常 RRS feed

全部回复

  • 是用VC++ 的x86还是x64平台编译的?

    看情况有可能是以x64编译的


    专注于.NET MIS开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年5月13日 0:04
  • vs2015 编译选项 x86 兼容xp errno 返回22 ,改用

    FILE*fp;
    fp = fopen(newform->line, "rb");
    if (fp == 0) {
    result = CURLE_BAD_FUNCTION_ARGUMENT;
    goto error;
    }
    fseek(fp, 0, SEEK_SET); fseek(fp, 0, SEEK_END);
    __int64 longBytes = _ftelli64(fp);
    if (longBytes == 0) {
    result = CURLE_BAD_FUNCTION_ARGUMENT;
    fclose(fp);
    goto error;
    }
    fclose(fp);这种方式可以得到文件长度,但判断不出来是否为文件夹,最好还是_stati64正常执行

    2016年5月13日 1:19
  • hi 贾延辉

    感谢在msdn论坛发帖。

    _stati64 返回-1说明文件或者路径找不到,返回22的话说明参数异常。请检查_stati64参数,在32位测试时注意该函数的长度类型为64位。可将使用该函数的代码粘贴上来,方便更好的定位错误。

    Best Regards.


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    2016年5月13日 2:04
  • struct_stat file;
    //xp机器stat errno == 22 不知道为什么
    if(!stat(newform->line, &file) && !S_ISDIR(file.st_mode))
        *size += filesize(newform->line, file);
     else {
         result = CURLE_BAD_FUNCTION_ARGUMENT;
          goto error;
     }

    文件存在fopen可以打开也可以得到文件长度。

    2016年5月13日 4:17
  • Hi 贾廷辉

    抱歉让你久等了

    >>stat(newform->line, &file)

    函数第一个参数为指向文件路径或目录的字符串的指针。请检查该参数是否正确。针对不同机器使用不同的stat函数,例如_stat32, _stat64, _stati64, _stat32i64, _stat64i32等等。

    Best Regards,

    Sera Yu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    2016年5月25日 8:02