我一直在尝试在个人项目中使用SCIP . 我设法编译scipoptsuite-3.2.1罚款(即使结果文件夹在我的下载文件夹中,因为我是一个懒汉),但我似乎无法使其工作 .
我在Eclipse CDT上工作,我可以很好地链接 Headers ,函数被识别但我在所有地方都有未定义的引用 . 当我尝试链接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 =“”来正确地将库, Headers 和二进制文件放在我的系统中(我必须编辑Makefile来执行此操作,因为它最初将链接到../thePath,其中path =“/ usr / local “, 例如) .
但是,它仍然无效 . 我认为是一个无限循环实际上是大量的错误(13.000),似乎是每个函数的未解决的调用 . (我现在只用-lscip编译) .
我现在能做什么 ?
1 回答
不幸的是,
libscip
不是您的应用程序的正确库 . 您应该在SCIP Optimization Suite的lib/
目录中使用libscipopt
(运行make scipoptlib
) .libscip
仅包含纯SCIP代码,只能与之一起使用liblpi{spx,cpx,...}
有一个LP解算器libnlpi
有一个NLP求解器libobjscip
获取C支持libscipopt
应该将所有这些库合并为一个以便于使用 .