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

使用Emscripten编译ITK时遇sizeof(void *)不匹配错误求助

问题

尝试使用Emscripten编译C++代码,先进行ITK构建:

  • 执行git clone https://github.com/InsightSoftwareConsortium/ITK.git克隆仓库
  • 运行CMake命令:
    cmake .. -DCMAKE_TOOLCHAIN_FILE=C:\emsdk\upstream\emscripten\cmake\Modules\Platform\Emscripten.cmake
    

执行后出现错误:

CMake Error at Modules/ThirdParty/ZLIB/src/itkzlib-ng/CMakeLists.txt:466 (message):
  sizeof(void *) is neither 32 nor 64 bit

完整构建日志片段:

C:\itknew\ITK\build>cmake .. -DCMAKE_TOOLCHAIN_FILE=C:\emsdk\upstream\emscripten\cmake\Modules\Platform\Emscripten.cmake
-- Found Git: C:/Program Files/Git/cmd/git.exe (found version "2.39.2.windows.1")
...
-- sizeof(void *) is  bytes
CMake Error at Modules/ThirdParty/ZLIB/src/itkzlib-ng/CMakeLists.txt:466 (message):
  sizeof(void *) is neither 32 nor 64 bit

-- Configuring incomplete, errors occurred!

使用的Emscripten版本为3.1.34。

错误原因

该错误的核心是CMake在交叉编译环境中未能正确检测到Emscripten目标平台的指针大小,导致sizeof(void *)的值为空,触发了zlib-ng的CMake脚本校验逻辑——该脚本仅允许32位或64位指针环境。

具体诱因可能包括:

  • Emscripten环境未正确激活:运行CMake前未执行emsdk activate和emsdk_env.bat(Windows环境)配置环境变量,导致CMake无法调用正确的Emscripten编译器与工具链,无法获取目标平台的指针信息。
  • CMake版本兼容性不足:旧版本CMake对Emscripten工具链支持不完善,无法正确解析目标平台参数,导致指针大小检测失败。
  • 工具链路径配置错误:CMAKE_TOOLCHAIN_FILE路径存在拼写错误、空格或特殊字符,或Emscripten目录权限问题,导致CMake无法加载完整工具链配置,无法正确检测目标架构。
解决建议
  • 正确激活Emscripten环境:在执行CMake的终端中,先运行以下命令(Windows环境):
    cd C:\emsdk
    emsdk activate 3.1.34
    emsdk_env.bat
    
    再切换到ITK的build目录重新执行CMake命令。
  • 升级CMake版本:使用3.21及以上版本的CMake,这类版本对Emscripten工具链的支持更完善。
  • 检查工具链路径:确认CMAKE_TOOLCHAIN_FILE的路径完全正确,若路径包含空格需用引号包裹,同时确保Emscripten安装目录有足够的读写权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:27:47