加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

一次性解决C++调用cplex时的所有设置问题

(2016-12-07 10:35:32)
分类: 系统实验

一次性解决C++调用cplex时的所有设置问题

C++中调用cplex时,会遇到了一系列问题,我现在从新建项目开始,到成功输出一个优化问题的结果,把这个过程中遇到的问题及解决方法写出来分享给大家。

1. Visual Studio中新建C++项目。

文件——新建——Visual C++ ——Win32控制台应用程序——名称取test_1,路径选择为“C:\Users\Xiexk\Desktop\on work\test\”——选择空项目——完成。

2. 找到cplex的安装目录,里面有针对C的标准的cplex的例子(注意最好不要随便在网上找一个,会有bug的),任选一个(lpex1.c"D:\cplex\cplex\examples\src\c\lpex1.c",添加到test_1的源文件中。                                 http://s10/mw690/0047A2O8zy76ZQCnLkZ39&690


3. Visual Studio中调用cplex的操作设置。

(1) Visual Studio中设置头文件路径。

项目——test_1属性——配置属性——C/C++——常规——附加包含目录——编辑,然后添加头文件。(注意首先找到cplex安装路径)

D:\cplex\cplex\include;

D:\cplex\concert\include;

http://s16/mw690/0047A2O8zy76ZQVEg5p9f&690

这一步会告诉VS有关Cplex(求解的核心算法)和Concert(建模时要用的类)的头文件在什么地方。一次设置,对所有项目有效。

(2) 项目——test_1属性——配置属性——链接器——常规——附加库目录——编辑,添加下面两个文件。

D:\cplex\cplex\lib\x64_windows_vs2012\stat_mda

D:\cplex\concert\lib\x64_windows_vs2012\stat_mda

http://s11/mw690/0047A2O8zy76ZQX2BOa1a&690

(3) Visual Studio中设置库文件

项目——test_1属性——配置属性——链接器——输入——附加依赖项,添加库文件

D:\cplex\cplex\lib\x64_windows_vs2012\stat_mda\cplex1251.lib

D:\cplex\cplex\lib\x64_windows_vs2012\stat_mda\ilocplex.lib

D:\cplex\concert\lib\x64_windows_vs2012\stat_mda\concert.lib

http://s1/mw690/0047A2O8zy76ZRdxf6820&690

(4) 把步骤(3)中的三个文件拷贝到项目的目录下"C:\Users\Xiexk\Desktop\on work\test\test_1\Release"

注:release文件夹需要先运行一下程序才出现,且此处必须将debug改为release,因为我们是生成一个可用的exe文件,然后再调用cplex来求解。

http://s7/mw690/0047A2O8zy76ZRdzopgd6&690

(5) 其他配置

a. 项目——test_1属性——配置属性——C/C++——预处理器——预处理器定义——编辑,加上“IL_STD

http://s8/mw690/0047A2O8zy76ZRdBw3Rb7&690

这一步是使用C++标准模板库STL必须的。

b.项目——test_1属性——配置属性——C/C++——代码生成——运行库

注:用多线程(/MT)和多线程DLL/MD)均可。

http://s16/mw690/0047A2O8zy76ZRdXwOH5f&690

4. 经过上述步骤,Visual Studio已经可以成功调用cplex了,但如果你电脑是64位,cplex也是64位的,运行lpex1还会报错“module machine type ‘x64’ conflicts with target machine type ‘x86’”,这是因为在64位系统中写win32 console application程序,编译时候出现冲突,解决办法如下。

(1) 项目——test_1属性——配置属性——链接器——高级——目标计算机——MachineX64 (/MACHINE:X64)

http://s7/mw690/0047A2O8zy76ZRe06Tcf6&690

(2) releasedebug)选项框右侧,在配置管理中,将该项目解决方案平台设置为“x64”。注意,此处必须将debug改为release,因为我们是生成一个可用的exe文件,然后再调用cplex来求解。

http://s14/mw690/0047A2O8zy76ZRe2uuh3d&690

5. 此时,运行程序仍会报错“win(32):已加载”C:\windows\System32\ntdll.dll”。无法查找或打开PDB文件”,解决方法如下。

(1) 工具——选项——调试——常规——启用源服务器支持

http://s7/mw690/0047A2O8zy76ZRe4Hhc36&690

(2) 工具——选项——调试——符号——Microsoft符号服务器

http://s11/mw690/0047A2O8zy76ZRe71hg7a&690

6. 经过上述所有步骤,程序终于成功运行,并生成exe程序。

http://s9/mw690/0047A2O8zy76ZRe8Zega8&690

7.找出exe文件,在命令窗口执行。

在命令窗口执行test_1.exe –r (-c -n)指令。

 http://s11/mw690/0047A2O8zy76ZRed2I2ca&690


参考以下三个博文:

http://blog.sina.com.cn/s/blog_50c154510100g81w.html

http://blog.sina.com.cn/s/blog_5ff46b2f0102v583.html

http://www.itdadao.com/articles/c15a24150p0.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有