【问题标题】:Linking SCIP to existing project将 SCIP 链接到现有项目
【发布时间】:2016-09-05 10:16:10
【问题描述】:

我一直在尝试在个人项目中使用 SCIP。我设法很好地编译了 scipoptsuite-3.2.1(即使生成的文件夹在我的下载文件夹中,因为我是一个懒汉),但我似乎无法让它工作。

我在 Eclipse CDT 上工作,我可以很好地链接标题,功能被识别但我到处都有未定义的引用。但是,当我尝试链接 scip 的库 (libscip.a) 时,出现以下错误:

/usr/bin/ld: /home/myusername/Downloads/scipoptsuite-3.2.1/scip-3.2.1/lib/libscip.a(fileio.o): undefined reference to symbol 'gzdopen'
//lib/x86_64-linux-gnu/libz.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [Segmentation_2D] Error 1

为了解决这个问题,我添加了命令 -lz 但是.. 这也不起作用。

  • 如果我这样链接:-lscip -lz -> 编译开始无限循环
  • 如果我这样链接:-lz -lscip -> DOS 缺失
  • 如果我这样链接:-lz -lscip -lz -> 编译开始进入无限循环

我只是不知道下一步该尝试什么,任何帮助将不胜感激。

谢谢

编辑 -

我现在已使用标志 ZLIB=false、READLINE=false 和 ZIMPL=false 重新安装。我还使用命令 INSTALLDIR="" 将库、头文件和二进制文件正确放置在我的系统中(我必须编辑 Makefile 才能做到这一点,因为它最初会链接到 ../thePath,使用 thePath="/usr/local ",例如)。

但是,它仍然不起作用。我认为的无限循环实际上是大量错误(13.000+),似乎是每个函数的未解决调用。 (我现在只用 -lscip 编译)。

我现在能做什么?

【问题讨论】:

    标签: c++ eclipse scip


    【解决方案1】:

    很遗憾,libscip 不是您的应用程序的正确库。您应该使用 SCIP 优化套件的 lib/ 目录中的 libscipopt(运行 make scipoptlib)。

    libscip 只包含纯 SCIP 代码,只能与

    • liblpi{spx,cpx,...} 有一个 LP 求解器
    • libnlpi 拥有 NLP 求解器
    • libobjscip C++ 支持

    libscipopt 应该将所有这些库合并为一个以便于使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 2011-02-19
      • 2019-06-03
      • 1970-01-01
      相关资源
      最近更新 更多