运行 Cplex 示例:未定义的引用
Getting Cplex example to run: Undefined references
我正在尝试让 Cplex 基本 LP 示例正常工作。代码可以在这里找到。我对 c++ 完全陌生,但希望能够运行它。
我正在尝试在 Linux 上编译它。我正在使用以下命令来运行它
g++ -D IL_STD -I /opt/ibm/ILOG/CPLEX_Studio1271/opl/include ilolpex1.cpp
放置 -D IL_STD 是为了解决此处发现的错误。-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*)'
我没有对文件进行任何更改,因此我认为唯一可能出错的是文件的链接方式。我觉得它可能只是一个简单的设置,但经过几个小时的寻找,我仍然不知道如何解决它。
编译
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
这将告诉您将来选择手动编译自己的应用程序时需要知道的所有信息。文档中对此进行了描述(例如,此处(。
显然,iloplex1.cpp 文件只是一个如何使用 IloCplex 的演示。
你还需要的是IloCplex本身。这应该作为 (a( 您必须使用演示编译的进一步源文件或作为您链接的库。
看看你的 cplex 目录,你可能会在那里的某个地方找到一个lib[...].a
文件,可能在 /opt/ibm/ILOG/CPLEX_Studio1271/opl/lib
.
您可以使用 GCC 的 (clang( -l 和 -L 选项进行链接。请注意,使用 -l
时,您省略了lib
和.a
(-l [...]
上面(无效(示例名称(。
相关文章:
- 编译C++时未定义的引用
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 对 Scalar ::Scalar() 的未定义引用
- 已定义函数时出现 G++ "未定义的引用"错误
- 链接 cmake 时出现未定义的引用错误
- 对复制 CTOR 和 CTOR 的未定义引用
- 错误:未定义对'oboe::AudioStreamBuilder::openStream(oboe::AudioStream**)'的引用
- 右值引用未定义的行为
- 对"vtable for DigitalClock"的未定义引用 - 未定义对"DigitalClock::staticMetaObject"的引用 - Qt
- 函数类型到函数类型的引用:未定义的引用
- avcodec_alloc_context引用未定义,但ffmpeg链接顺序正确
- 从c++调用Fortran子程序,链接时引用未定义
- 枚举引用未定义,但位于包含的头文件中