第一次尝试 SCIP。我无法完全理解如何将 JNI 与 SCIP 版本 8.x.x 一起使用。在 MacO 上。
我从网站下载了 scipoptsuite-8.0.4,然后按照如何编译它的说明进行操作:
mkdir build
cd build
cmake .. -DAUTOBUILD=on
make
make install
经过验证后,共享库已创建:
➜ ls /usr/local/lib/libscip.dylib
/usr/local/lib/libscip.dylib
然后我按照 Or-Tools 的说明进行操作:
System.loadLibrary("scip"); // added to verify, that shared lib is accessible
MPSolver mpSolver = MPSolver.createSolver("SCIP");
我收到了这个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'long com.google.ortools.linearsolver.mainJNI.MPSolver_createSolver(java.lang.String)'
at com.google.ortools.linearsolver.mainJNI.MPSolver_createSolver(Native Method)
at com.google.ortools.linearsolver.MPSolver.createSolver(MPSolver.java:140)
at org.example.Solver.solve(Solver.java:58)
at org.example.Solver.main(Solver.java:24)
遗憾的是,我没有任何 C++ 相关背景来继续进行下去。
事情就是这样,经过两个小时的挖掘,我发现我完全忘记了:
Loader.loadNativeLibraries();
在通过 Or-Tools 实际加载此库之前。
希望将来有人会花更少的时间来调查这样的事情。