我正在努力让Cplex基本LP示例正常工作。代码可以找到here。我是c ++的新手,但希望能够让它运行起来。
我正在尝试在linux上编译它。我正在使用以下命令来运行它
g++ -D IL_STD -I /opt/ibm/ILOG/CPLEX_Studio1271/opl/include ilolpex1.cpp
-D IL_STD用于解决发现here的错误。 -I ...被放在那里指定头文件的位置。经过大量的尝试和谷歌搜索,我自己想出了这个,所以我不确定这是否正确。
无论如何,当我运行它时,我得到未定义引用的错误:
/tmp/ccl9O1YF.o: In function `populatebyrow(IloModel, IloNumVarArray, IloRangeArray)':
ilolpex1.cpp:(.text+0x18f): undefined reference to `IloNumVar::IloNumVar(IloEnv, double, double, IloNumVar::Type, char const*)'
我没有对文件进行任何更改,所以我假设唯一可能出错的是文件是如何链接的。我觉得它可能只是一个简单的设置,但看了几个小时后我仍然不知道如何解决它。
答案 0 :(得分:1)
编译ilolpex1.cpp示例的最简单方法是使用安装中包含的Makefile。例如,您应该执行以下操作:
$ cd /opt/ibm/ILOG/CPLEX_Studio1271/cplex/examples/x86-64_linux/static_pic
$ make ilolpex1
这将产生输出,如下所示:
g++ -O0 -c -m64 -O -fPIC -fno-strict-aliasing -fexceptions -DNDEBUG -DIL_STD -I../../../include -I../../../../concert/include ../../../examples/src/cpp/ilolpex1.cpp -o ilolpex1.o
g++ -O0 -m64 -O -fPIC -fno-strict-aliasing -fexceptions -DNDEBUG -DIL_STD -I../../../include -I../../../../concert/include -L../../../lib/x86-64_linux/static_pic -L../../../../concert/lib/x86-64_linux/static_pic -o ilolpex1 ilolpex1.o -lconcert -lilocplex -lcplex -lm -lpthread
如果您选择在将来手动编译自己的应用程序,这将告诉您需要知道的所有内容。文档中描述了有关此内容的详细信息(例如,here)。
答案 1 :(得分:0)
显然,iloplex1.cpp文件只是演示如何使用 IloCplex。
您需要的是IloCplex 本身。这应该是(a)您必须使用演示编译的其他源文件或作为您链接的库。
查看您的cplex目录,您可能会在lib[...].a
的某处找到/opt/ibm/ILOG/CPLEX_Studio1271/opl/lib
文件,可能。
您可以使用GCC(clang's)-l and -L options进行链接。请注意,在使用-l
时,您会遗漏lib
和.a
(-l [...]
以及(无效的)样本名称)。