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

Linux服务器安装SCIP OptSuite 7.0.3时Bliss编译失败

解决SCIP OptSuite 7.0.3与Bliss 0.77的编译兼容问题

问题根源

SCIP OptSuite 7.0.3的compute_symmetry_bliss.cpp中使用的Bliss回调函数签名(包含void*用户数据参数)与Bliss 0.77的API不兼容。Bliss 0.77对find_automorphisms方法的回调接口做了修改:移除了原有的void*自定义参数,改用std::function通过捕获上下文传递数据,导致SCIP的旧代码无法完成类型转换,触发编译错误。

解决方案

方案1:降级Bliss到兼容版本

SCIP OptSuite 7.0.3适配Bliss 0.73版本,操作步骤如下:

  • 卸载当前Bliss 0.77:
    sudo rm -rf /usr/local/include/bliss /usr/local/lib/libbliss*
    sudo ldconfig
    
  • 下载并编译安装Bliss 0.73:
    # 下载Bliss 0.73源码包(可从官方发布渠道获取)
    tar xzf bliss-0.73.tar.gz
    cd bliss-0.73
    ./configure
    make
    sudo make install
    sudo ldconfig
    
  • 重新编译SCIP OptSuite 7.0.3:
    cd /opt/scipoptsuite-7.0.3
    rm -rf build
    mkdir build && cd build
    cmake ..
    make
    

方案2:修改SCIP代码适配Bliss 0.77

通过调整回调函数的调用方式,适配Bliss 0.77的API:

  • 编辑文件/opt/scipoptsuite-7.0.3/scip/src/symmetry/compute_symmetry_bliss.cpp
  • 找到第377行的调用代码:
    G.find_automorphisms(stats, blisshook, (void*) &data);
    
  • 将其替换为lambda表达式捕获data,适配新的回调签名:
    G.find_automorphisms(stats, [&data](unsigned int n, const unsigned int* aut) {
        blisshook(&data, n, aut);
    });
    
  • 保存文件后重新编译SCIP OptSuite即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:41