在Windows系统上安装NLopt并配合VS使用

激光雷达Lidar和RTK的标定2-----Windows下安装和使用nlopt优化(matlab) Windows下安装和使用nlopt优化(matlab) windows下安装和使用nlopt非常痛苦(指安装),但是一些算法上的优化(一般是点云优化)在C++上直接做很麻烦,且显示效果不佳,因此用matlab更加简单些。这里记录了win下安装混合使用nolpt库的过程。(这里仅有64位电脑的安装过程) 安装过程 安装过程分为这几个步骤: 1.前置需求 cmake mingw64 2.nlopt在windows下安装 下载 安装过程 3.在matlab中使用nlopt(难度最大,出问题最多的地方) 如何使用 阅读详情
AI摘要

本文详细介绍在Windows系统中通过Git Bash下载NLopt源码,使用CMake为Visual Studio生成项目,并完成VC++目录、库目录、包含目录及依赖项等关键配置,最终实现NLopt库在VS2022中的调用。同时提供nlopt.dll缺失问题的解决方案。

前言

最近在做的课题需要用到NLopt库来优化,然而配置环境困住了我至少四天。上网搜索了很多相关内容,根据这篇博客成功配合命令行使用,但是想要运行在vs上还是有困难。参考Gabriel Domingos的博客,我成功在VS2022上面配置了NLopt,现在记录一下整个过程。原博客指路

准备工具

  • Git Bash,如果需要下载,点击这里
  • CMake, 如果需要下载,点击这里
  • Visual Studio, 如果需要下载,点击这里 。作者使用的是2022版本。下载完成VS后,记得下载C++开发工具,具体配置C++环境,可参考这里。

现在准备好了这些,开始安装吧!

开始安装

使用Git Bash下载NLopt

  • 在你想要安装的文件夹(我这里安装的文件夹位置是D:\OpenSource\nlopt)下打开Git Bash(在文件夹中右键可以看到Open Git Bash here),然后键入以下命令:
    git clone https://github.com/stevengj/nlopt
    
  • 之后你会在当前选择的文件夹下得到一个nlopt文件夹,其中包含的是GitHub上最新版本的NLopt。于是我当前的文件结构为D:\OpenSource\nlopt\nlopt.

使用CMake为Visual Studio构建工程

  • 打开CMake GUI(可以在安装的CMake文件夹中找到),在 “Where is source code” 中输入你的nlopt文件夹位置,在我的例子中是 D:\OpenSource\nlopt\nlopt

  • 在 “Where to build the binaries” 选择文件夹放CMake构建的二进制文件。我在当前文件夹下创建了新的build文件夹,该文件夹的路径为 D:\OpenSource\nlopt\nlopt\build
    在这里插入图片描述

  • 点击 Generate 并确认你的Visual Studio 版本,我的选择是 Visual Studio 17 2022。点击 Finish。
    在这里插入图片描述

  • 之后点击 Generate 然后等待,出现 Generating done 说明创建成功。
    在这里插入图片描述

  • 点击 Open Project,这会自动打开一个Visual Studio界面,如下图
    在这里插入图片描述

  1. 在这个界面中,在右侧,确保你有 ALL_BUILD
  2. 选择编译模式为 Release
  3. 选择你适合的x86或者x64格式
  4. 在上方菜单栏,点击 生成 中的 生成解决方案

以上步骤将为所选的配置和平台构建库。在完成 Release 模式后,你可以选择 Debug 再重复第四个步骤。

在Visual Studio中创建一个简单的例子

  • 打开 Visual Studio,创建新空白项目。
  • 新建一个 main.cpp 文件,复制以下代码:
    #include <iomanip>
    #include <iostream>
    #include <vector>
    
    #include <nlopt.hpp>
    
    typedef struct {
        double a, b;
    } my_constraint_data;
    
    double myvfunc(const std::vector<double>& x, std::vector<double>& grad, void* my_func_data)
    {
        if (!grad.empty()) {
            grad[0] = 0.0;
            grad[1] = 0.5 / sqrt(x[1]);
        }
        return sqrt(x[1]);
    }
    
    double myvconstraint(const std::vector<double>& x, std::vector<double>& grad, void* data)
    {
        my_constraint_data* d = reinterpret_cast<my_constraint_data*>(data);
        double a = d->a, b = d->b;
        if (!grad.empty()) {
            grad[0] = 3 * a * (a * x[0] + b) * (a * x[0] + b);
            grad[1] = -1.0;
        }
        return ((a * x[0] + b) * (a * x[0] + b) * (a * x[0] + b) - x[1]);
    }
    
    int main() {
        nlopt::opt opt(nlopt::LD_MMA, 2);
        std::vector<double> lb(2);
        lb[0] = -HUGE_VAL; lb[1] = 0;
        opt.set_lower_bounds(lb);
        opt.set_min_objective(myvfunc, NULL);
        my_constraint_data data[2] = { {2,0}, {-1,1} };
        opt.add_inequality_constraint(myvconstraint, &data[0], 1e-8);
        opt.add_inequality_constraint(myvconstraint, &data[1], 1e-8);
        opt.set_xtol_rel(1e-4);
        std::vector<double> x(2);
        x[0] = 1.234; x[1] = 5.678;
        double minf;
    
        try {
            nlopt::result result = opt.optimize(x, minf);
            std::cout << "found minimum at f(" << x[0] << "," << x[1] << ") = "
                << std::setprecision(10) << minf << std::endl;
        }
        catch (std::exception& e) {
            std::cout << "nlopt failed: " << e.what() << std::endl;
        }
    }		
    

这与 NLopt 教程中的代码几乎相同 - NLopt 文档的 C++ 选项卡中的示例,但从原始代码中更正了一些拼写错误。

当你粘贴并保存以上代码到main.cpp文件中时,可以看到Visual Studio提示这份代码有些问题,但是先别着急,后面让我们来配置Visual Studio项目解决这个情况。
在这里插入图片描述

配置Visual Studio项目

  • 在右侧 解决方案,点击鼠标右键,选择 属性,进入到 属性页。
  • 将配置改为 所有配置, 平台改为 所有平台。
    在这里插入图片描述
  • 在左侧的标签菜单上,选择 配置属性 ->调试 ->环境, 编辑上以下内容:
    PATH=%PATH%;D:\OpenSource\nlopt\nlopt\build\$(Configuration)
    
    这个地址是nlopt.dll所在的位置, 如果你的nlopt文件夹位置和我不一样,请找到相应的位置键入。
  • 选择 VC++目录 ->库目录, 编辑上以下内容:
    D:\OpenSource\nlopt\nlopt\build\$(Configuration)
    
    这个地址是nlopt.lib所在的位置
  • 选择 C/C++ -> 通用 -> 附加包含目录,编辑以下内容:
    D:\OpenSource\nlopt\nlopt\src\api
    D:\OpenSource\nlopt\nlopt\build
    
    第一行为nlopt.h文件的位置,第二行为nlopt.hpp文件的位置
  • 选择 链接器 -> 输入 -> 附加依赖项,编辑以下内容:
    nlopt.lib
    
  • 应用并保存以上所有配置。
  • 现在你可以看到,之前提示的错误全部解决了。
    在这里插入图片描述

配置成功

代码运行成功的结果为:

found minimum at f(0.333333,0.296296) = 0.5443310474

如果你跟我一样配置成功了,会有相同的结果。
在这里插入图片描述
—2024.08.24 更新 —

找不到nlopt.dll文件可能的解决办法

如果你是运行已有的项目,修改好配置后依旧显示找不到nlopt.dll文件,另外一种可以尝试的方法:直接找到你的nlopt.dll文件,将其复制到项目的debug或release文件夹下(一般和项目在同一个文件夹,或在同一个文件夹的x64文件夹内)随后即可解决。

正确安装nlopt 一、Linux 系统安装‌1. ‌通过包管理器自动安装(推荐)‌2. ‌手动编译安装到默认位置‌‌二、Windows 系统安装‌1. ‌CMake + Visual Studio 编译安装‌通过 CMake 指定安装路径到系统目录(如 C:\Program Files):使用 CMake GUI 配置源码路径和生成路径(如 build)‌13设置 CMAKE_INSTALL_PREFIX 为 C:\Program Files\nlopt(系统级默认路径)‌3。 阅读详情

相关推荐

【局部规划模块轨迹优化算法】使用nlopt优化库进行路径规划的后端轨迹优化--梯度下降的函数优化使得轨迹形变(同时考虑路径平滑、远离障碍物、不偏离中心线的要求的凸优化方法)

https://nlopt.readthedocs.io/en/latest/NLopt_Installation/

qq_35635374的博客 1158

非线性优化--NLopt原理介绍及使用方法

NLopt--非线性优化--原理介绍前言非线性优化NLopt中的几个概念1 优化问题的数学模型举个例子2 全局优化与局部优化全局优化局部优化基于梯度(Gradient)算法与无导数算法梯度算法无导数算法终止条件函数值容差和参数容差函数值停止数值迭代次数和时间对于全局优化的停止安装库NLopt使用方法 前言 什么是NLopt ? NLopt(nonlinear optimization)是一个免费的开源的库,提供了很多种非线性优化算的使用接口。 NLopt的优点: 1、其中非常大的优势就是提供多种支持的语言,

月照银海似蛟龙的博客 1万+

win10任务栏文件夹设置成竖形列表样式

win10任务栏文件夹设置成竖形列表样式

ftzchina的博客 7085

nlopt在windows上的安装使用

3.下载dll和def:http://ab-initio.mit.edu/wiki/index.php?1.利用mingw中的dlltool工具,将def换位lib:dlltool -d libnlopt-0.def -l libnlopt-0.lib -k。1.下载nlopt库:https://nlopt.readthedocs.io/en/latest/2.把nlopt.h、nlopt.c和libnlopt-0.lib拉到文件夹下。

略知12的博客 1749

时空数据建模的跨节点联邦图神经网络:KDD21 Cross-Node Federated Graph Neural Network for Spatio-Temporal Data Modeling

前言 联邦学习(FL)虽然已经被广泛研究,但是对复杂的时空依赖关系进行建模以提高预测能力仍然是一个开放的问题。此外目前最优的时空预测模型假定对数据的访问不受限制,忽略了对数据共享的限制。基于此,本文提了一个基于图联邦学习的时空数据模型 Cross-Node Federated Graph Neural Network (CNFGNN),该模型在跨节点联邦学习的约束下,使用基于图神经网络(GNN)的架构对底层图结构进行编码,属于结构化联邦的一种,每个本地模型利用私有数据进行学习,并保持分散性。CNFGNN

qq_56027260的博客 1810

告别串口打印:手把手教你用Qt Creator远程调试i.MX6开发板(附gdbserver配置)

本文详细介绍了如何使用Qt Creator配合gdbserver实现i.MX6等ARM开发板的远程调试,告别传统的串口打印调试方式。通过图形化界面设置断点、监控变量,显著提升嵌入式开发效率,适用于各类ARM架构开发板的调试需求。

weixin_30781775的博客 217

Windows平台NLopt安装全攻略:CMake+VS2019配置详解

本文提供了一份详尽的Windows平台NLopt安装与配置指南。针对科学计算与优化算法开发需求,文章手把手教学,使用CMake和Visual Studio 2019,从源码编译、库文件安装到项目集成,帮助开发者克服Windows环境配置难题,顺利调用NLopt的强大功能。

smartcontract5的博客 248

Android 12 系统横屏时,开机动画有两秒显示不全

平板系统默认横屏时,开机会旋转90度,显示的分辨率WxH,会变成HxW.但又会很快被SurfaceFlinger的SurfaceFlinger::processDisplayChanged 娇正。所以为了保险,可以在开机动画没结束之前,禁止旋转事件。在Android 12 产品定制化开发中,由于系统默认方向为竖屏,平板电脑要横屏显示。系统在开机时,有时因为旋转,会出现动画只显示一部分。

448313096@qq.com 1186

非线性优化NLopt——介绍

NLopt,非线性优化,问题描述,目标函数,约束处理

weixin_43129576的博客 2572

【51单片机仿真】基于51单片机设计的多功能电子时钟日历(实时时钟闹钟秒表温度检测)系统__资料编号5

该项目是基于单片机的多功能电子时钟系统,集成了时间显示、闹钟设置、秒表功能以及温度显示等功能。主要硬件包括1602液晶显示屏、DS1302时钟芯片、DS18B20温度传感器和蜂鸣器。系统通过按键进行时间和闹钟的设置,并实时显示当前时间和温度。

嵌入式阿齐Archie 2万+

华为OD机试真题 新系统-字符串格式调整(C/C++/Py/Java/Js/Go)

华为OD机试 新系统真题【字符串格式调整】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【字符串格式调整】多语言题解

qq_45776114的博客 1142

安装nlopt

安装nlopt 下载地址:https://github.com/stevengj/nlopt 安装操作 git clone https://github.com/stevengj/nlopt.git cd nlopt mkdir build cd build cmake .. make sudo make install [外链图

W_X_123的博客 2182

利用ADS建立MIPI D-PHY链路仿真流程

由于MIPI D-PHY的速率并不算高,因此,PCB设计难度通常不大,主要做好差分线的等长、阻抗的连续性、端口处的阻抗优化以及控制好走线的长度,拿到满意的结果还是较为轻松的,最后,建立流程化的仿真工程文件,可以保存为模板,方便日后的设计复用,非常方便。

一只豌豆象的博客 3572

NLopt

非线性优化–NLopt(nonlinear optimization)是一个免费的开源的库,提供了很多种非线性优化算的使用接口。1、其中非常大的优势就是提供多种支持的语言,包括C/ C++/ Julia/ Python/ R/ Fortran/ Lua/ OCaml/ Octave等都支持。

try_trying_try的博客 974

实战封神!YOLOv7 轻量化部署全攻略:ONNX格式转换+TensorRT极致加速(速度直接提升3-5倍,精度无损)

部署核心链路,这是YOLO系列部署的最优解,速度提升3~5倍,精度无损;ONNX是桥梁:解决模型兼容性问题,简化后能去掉冗余节点,是TensorRT加速的前提;TensorRT是核心:NVIDIA显卡的极致加速引擎,FP16量化是速度与精度的最优平衡,无需手动配置,一键开启;轻量化终极组合YOLOv7-tiny + 416尺寸 + TensorRT FP16,速度提升5~8倍,满足所有实时检测场景;避坑核心:转换参数必加,推理尺寸必须一致,engine文件显卡专属。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 308

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

编译时,pcap.h或nlopt.hpp 找不到对应的文件 解决办法

ubuntu16.04 在编译ROS包时候,发现系统提示无法找到pcap.h以及nlopt.hpp文件,原因是系统中缺少对应的头文件以及库,通过apt方法获取 # 获取libpcap sudo apt-get install libpcap-dev #获取libnlopt sudo apt-get install libnlopt-dev ...

fangpopopo的博客 2912

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

单线激光、相机的联合标定

这篇介绍的是autoware的多传感器标定版本,简单实用

押波张飞的博客 905

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Ubuntu18.04安装nlopt

nlopt安装

RandyOliver's House 7034

【亲测免费】 探索NLOPT:一款强大的开源优化库

是一款由Steven G. Johnson开发的开源非线性优化库,适用于各种科学和工程问题。该项目的目标是提供一个跨平台、灵活且易于使用的工具,用于解决非线性优化问题。 ## 项目简介 NLOPT是一个C++库,同时也提供了Python、Octave和其他语言的接口。它包含了多种优化算法,包括局部搜索(如L-BFGS)、全局搜索(如遗传算法)以及其他一系列高级方法。这些算法可以处理无约束优化、...

gitblog_00022的博客 970

NLopt 开源项目安装与使用教程

NLopt 项目的目录结构如下: ``` nlopt/ ├── AUTHORS ├── CITATION.bib ├── CMakeLists.txt ├── COPYING ├── COPYRIGHT ├── ChangeLog ├── NEWS.md ├── README.md ├── TODO ├── mkdocs.yml ├── nlopt.pc.in ├── nlopt_config....

gitblog_00169的博客 582

NLopt详细介绍

NLopt 介绍 在本手册的这一章中,我们首先概述NLopt解决的优化问题,不同类型的优化算法之间的主要区别,并评论以NLopt要求的形式转换各种问题的方法。我们还将描述NLopt的背景和目标

BerenCamlost的博客 1万+

【亲测免费】 NLopt:开源非线性优化库

NLopt 是一个用于非线性优化的开源库,支持多种编程语言。该项目的主要编程语言包括 C、Fortran、C++、Roff、CMake 和 MATLAB。NLopt 提供了一个简单且统一的接口,封装了多个开源的非线性优化算法库,适用于全局和局部优化问题,无论是否需要梯度信息。 ## 项目核心功能 NLopt 的核心功能包括: 1. **非线性优化**:支持全局和局部优化,适用于有约束和无约束...

gitblog_00920的博客 1249

fatal error: nlopt.hpp: 没有那个文件或目录

解决方法: 1.直接clone源文件,进行二进制安装 # git clone git://github.com/stevengj/nlopt # cd nlopt # mkdir build # cd build # cmake .. # make -j8 # sudo make install 这样nlopt.hpp文件就会从nlopt-in.hpp产生。

Awesomewan的博客 3164

nlopt非线性优化算法整理

nlopt非线性优化算法整理

subtitle_的博客 5101

非线性优化库NLopt简介

非线性优化库NLopt NLopt 是一个轻量级开源非线性优化库, 为多种优化算法提供了统一的接口。 主页:https://nlopt.readthedocs.io/en/latest/ git:https://github.com/stevengj/nlopt 目录 非线性优化库NLopt 目录 下载安装 API nlopt_create nlopt_set_min_obj...

老越爱吃鱼 1万+

非线性优化NLopt——算法

非线性优化,NLopt,SLSQP,Low-storage BFGS

weixin_43129576的博客 1357
上一篇: OpenCV提取图片颜色并输出
下一篇: 在Windows系统上安装OpenCV并配合VS使用
Ayu阿予
博客等级 码龄5年 456粉丝 47原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ayu阿予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值