You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用g++编译ftpupload.c出现void*转FILE*错误如何解决?

问题根因

你使用C编译器g++编译原生C代码触发了类型校验规则差异:C语言允许void*类型指针隐式转换为其他类型指针,但C不允许该隐式转换,因此在fread调用传入void*类型的stream参数时报错。

解决方法
  • 方案1(优先推荐):使用C语言编译器编译代码
    该源码本身是C语言实现,直接用gcc编译即可,编译命令如下:
    gcc -o program ftpupload.c -lcurl
    
    注意需添加-lcurl参数链接curl依赖库,避免后续链接阶段报错。
  • 方案2:修改源码适配C++编译规则
    找到报错对应的第57行,对stream参数添加显式类型转换:
    // 原代码
    size_t retcode = fread(ptr, size, nmemb, stream);
    // 修改为
    size_t retcode = fread(ptr, size, nmemb, (FILE*)stream);
    
    修改后再用g++编译即可通过。
  • 方案3(不推荐,仅临时调试使用):添加编译参数放宽C类型检查
    编译时添加-fpermissive参数,允许C
    编译器接受不符合规范的隐式类型转换:
    g++ -o program ftpupload.c -lcurl -fpermissive
    
    该方案会关闭部分类型校验,可能掩盖其他代码问题,不建议正式场景使用。

内容的提问来源于stack exchange,提问作者JDop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:30:00