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

Windows下编译zfp示例simple.c遇未定义引用错误求解决

在Windows上编译zfp项目simple.c的正确方法

错误原因

你碰到的问题分两类:

  • 隐式函数声明警告:比如stream_open、stream_close,是因为编译时没正确关联bitstream模块的头文件,更核心的是没链接zfp的库实现。
  • 未定义引用错误:所有zfp_xxx函数找不到,本质是只编译了simple.c,没把zfp的库文件链接进来,编译器找不到这些函数的二进制实现。

完整操作步骤

1. 先编译zfp核心库

zfp是库项目,不能直接单独编译示例文件,必须先编译库:

  • 下载zfp完整源码(不要只提取examples目录)
  • 用CMake生成编译工程(以MinGW为例,VS流程类似):
    1. 打开MinGW终端,进入zfp源码根目录
    2. 创建并进入编译目录:
      mkdir build && cd build
      
    3. 生成MinGW Makefile:
      cmake .. -G "MinGW Makefiles"
      
    4. 编译库文件:
      mingw32-make
      
      编译完成后,build目录会生成libzfp.a(静态库)或libzfp.dll(动态库)

2. 编译simple.c并链接zfp库

假设zfp源码根目录为zfp,simple.c在zfp/examples,库文件在zfp/build,执行以下命令:

gcc -o simple.exe zfp/examples/simple.c -Izfp/src -Lzfp/build -lzfp

参数说明:

  • -Izfp/src:指定zfp头文件(zfp.h、bitstream.h等)的搜索路径
  • -Lzfp/build:指定zfp库文件的存放路径
  • -lzfp:告诉编译器链接zfp库

3. 处理残留警告

如果还有stream_open类警告,确认simple.c中已包含bitstream.h,若没有手动添加:

#include "bitstream.h"

正常情况下zfp.h会间接引入该头文件,只要头文件路径正确就不会出现问题。

运行程序

编译成功后,直接执行生成的simple.exe即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:55:27