关于C#:将SCIP链接到现有项目

Linking SCIP to existing project

我一直在尝试在个人项目中使用SCIP。我设法编译了scipoptsuite-3.2.1很好(即使结果文件夹在我的Download文件夹中,因为我是个傻子),但我似乎无法使其正常工作。

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

1
2
3
4
/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进行编译。)

我现在该怎么办?


很遗憾,libscip不是适用于您的应用程序的正确库。您应该从SCIP Optimization Suite的lib/目录(运行make scipoptlib)中使用libscipopt

libscip仅包含纯SCIP代码,并且只能与

一起使用

  • liblpi{spx,cpx,...}具有LP解算器
  • libnlpi具有NLP求解器
  • libobjscip用于C支持

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