由于项目需要在windows下用C++开发且调用ipopt,ipopt官方文档展示的在Windows下的编译比较复杂,一些依赖库较难下载配置。好在已有了编译好的链接库文件,折腾一晚上后能用了,简单记录。总结如下,预计10分钟即可完成。
一、下载
ipopt源代码(仅需example代码测试用)和编译好win平台结果:
Releases · coin-or/Ipopt (github.com)
这俩就行
二、解压配置
1.找地方解压 Ipopt-3.14.10-win64-msvs2019-md
目录是下图这样的,bin\内是动态链接库dll和exe文件,include\内是库的头文件,lib\内是lib文件,下面分别在vs2019的已有项目中配置添加。
例如解压后文件夹名为 Ipopt-3.14,将其拷贝到vs项目路径下,通过相对路径配置。也可以放在自定义路径,让多个项目共同使用。
头文件
项目右键->属性->配置属性->VC++目录->常规->包含目录,添加上 .\Ipopt-3.14\include\coin-or
也可以在 项目右键->属性->配置属性->C/C++->常规->附加包含目录,效果相同。
这样可以用 #include<XXX.hpp> (<>在包含目录中查找头文件,""先在源文件所在目录中查找,如果没有再去包含目录查找,详见关于C语言include尖括号和双引号的对话)
否则只能 #include"Ipopt-3.14/include/coin-or/IpIpoptApplication.hpp" ,当然这是 Ipopt-3.14文件夹在项目路径下时。
静态库lib
项目->资源文件右键->添加->现有项 ,选择四个Ipopt-3.14\lib\内四个lib文件添加。
动态库dll
的项目右键->属性->配置属性->调试->环境,添加 PATH=.\Ipopt-3.14\bin
2.找地方解压 Ipopt-releases-3.14.10
打开Ipopt-releases-3.14.10\examples\Cpp_example,复制cpp_example.cpp、MyNLP.cpp、MyNLP.hpp三个文件到项目目录下,并添加进项目中(右键添加现有项)
最后检查项目中没有其他main函数,debug x64下编译生成,运行成功。
后续打算结合CppAD使用。