C++包管理工具vcpkg的安装使用教程

news2025/4/3 2:34:20

前言

使用vcpkg可以更方便地安装各种库,省去配置的时间和配置失败的风险,类似python中的anaconda,懒人必备

参考

安装参考:https://bqcode.blog.csdn.net/article/details/135831901?fromshare=blogdetail&sharetype=blogdetail&sharerId=135831901&sharerefer=PC&sharesource=weixin_45702459&sharefrom=from_link

命令参考:https://blog.csdn.net/lizhichao410/article/details/132339064?fromshare=blogdetail&sharetype=blogdetail&sharerId=132339064&sharerefer=PC&sharesource=weixin_45702459&sharefrom=from_link

第二个链接中提供了很多vcpkg的命令使用,包括库的导出和更新,但是我这里用不到,所以就没写。

VS添加英文语言包

首先要在vs中添加英语语言包:

在查找中找到visual studio installer:

点击修改:

在语言包中勾选英语并安装:

cmake工具安装

其实vcpkg还是使用cmake作为编译工具的,所以得安装cmake,地址:https://cmake.org/download/

根据自己电脑是64位还是32位选择installer,我电脑是x64,所以选择cmake-3.30.1-windows-x86_64.msi

下载之后双击msi,根据指示安装完成。

下载Vcpkg

此处可以使用git clone,但是需要外网,也可以到git网页中下载压缩包并解压:

git clone https://github.com/microsoft/vcpkg.git

安装Vcpkg

右键,以管理员身份运行

安装完成后出现exe

将vcpkg添加进vs中

文件夹内右键,在终端中打开,输入:

./vcpkg integrate install

出现以下结果则为安装成功。

在任意一个项目中打开vs,在项目属性界面就可以vcpkg

vcpkg安装库并测试

以好装的eigen库和难装的matio库做演示

在终端中搜索eigen

./vcpkg search eigen

找到eigen3

安装eigen3

./vcpkg install eigen3:x64-windows

安装成功

在终端中搜索matio

./vcpkg search matio

找到matio

安装matio

./vcpkg install matio:x64-windows

安装成功

安装成功后在终端再次运行以下命令来让全局库集成生效

./vcpkg integrate install

使用以下代码对eigen和matio进行测试

#include <iostream>
#include <vector>
#include <Eigen/Dense>
#include <matio.h>

int main() {
    // ==================== Eigen 库测试部分 ====================
    std::cout << "=== Eigen 库测试 ===" << std::endl;

    // 创建 Eigen 矩阵
    Eigen::MatrixXd eigen_mat(3, 3);
    eigen_mat << 1, 2, 3,
        4, 5, 6,
        7, 8, 9;

    std::cout << "Eigen 矩阵:\n" << eigen_mat << std::endl;

    // 矩阵运算
    Eigen::MatrixXd eigen_mat_squared = eigen_mat * eigen_mat;
    std::cout << "Eigen 矩阵平方:\n" << eigen_mat_squared << std::endl;

    // 特征值分解
    Eigen::SelfAdjointEigenSolver<Eigen::MatrixXd> eigensolver(eigen_mat);
    if (eigensolver.info() != Eigen::Success) {
        std::cerr << "特征值计算失败" << std::endl;
        return 1;
    }
    std::cout << "特征值:\n" << eigensolver.eigenvalues() << std::endl;

    // ==================== Matio 库测试部分 ====================
    std::cout << "\n=== Matio 库测试 ===" << std::endl;

    // 创建 matio 变量
    size_t dims[2] = { 3, 3 };
    double data[9] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9 };

    matvar_t* matvar = Mat_VarCreate("test_matrix", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, data, 0);
    if (matvar == NULL) {
        std::cerr << "创建 Matio 变量失败" << std::endl;
        return 1;
    }

    // 打印 matio 变量信息
    std::cout << "Matio 变量名称: " << matvar->name << std::endl;
    std::cout << "Matio 变量大小: " << matvar->dims[0] << "x" << matvar->dims[1] << std::endl;

    // 访问数据
    double* mat_data = static_cast<double*>(matvar->data);
    std::cout << "Matio 矩阵数据:\n";
    for (size_t i = 0; i < 3; ++i) {
        for (size_t j = 0; j < 3; ++j) {
            std::cout << mat_data[i + j * 3] << " ";
        }
        std::cout << std::endl;
    }

    // ==================== Eigen 和 Matio 交互测试 ====================
    std::cout << "\n=== Eigen 和 Matio 交互测试 ===" << std::endl;

    // 将 Eigen 矩阵转换为 Matio 变量
    Eigen::MatrixXd eigen_to_convert(2, 2);
    eigen_to_convert << 1.5, 2.5, 3.5, 4.5;

    size_t conv_dims[2] = { static_cast<size_t>(eigen_to_convert.rows()),
                          static_cast<size_t>(eigen_to_convert.cols()) };

    // 注意: 这里直接使用 Eigen 的数据指针,确保内存布局匹配 (列优先)
    matvar_t* converted_var = Mat_VarCreate("eigen_matrix", MAT_C_DOUBLE, MAT_T_DOUBLE,
        2, conv_dims, eigen_to_convert.data(), 0);
    if (converted_var == NULL) {
        std::cerr << "转换 Eigen 矩阵到 Matio 变量失败" << std::endl;
        Mat_VarFree(matvar);
        return 1;
    }

    std::cout << "从 Eigen 转换的 Matio 变量数据:\n";
    double* conv_data = static_cast<double*>(converted_var->data);
    for (size_t i = 0; i < 2; ++i) {
        for (size_t j = 0; j < 2; ++j) {
            std::cout << conv_data[i + j * 2] << " ";
        }
        std::cout << std::endl;
    }

    // 清理资源
    Mat_VarFree(matvar);
    Mat_VarFree(converted_var);

    std::cout << "\n测试完成!" << std::endl;
    return 0;
}

测试成功,全程不需要配置属性中的环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2326907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务面试题:配置中心

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

Qt msvc2017程序无法用enigma vitrual box打包,用winrar打包

我们通常打包Qt程序用Enigma virtual box。这样我们的程序就可以在别的电脑上也能运行&#xff0c;但是有时候&#xff0c;我们发现Enigma virtual box在打包的时候&#xff0c;对于msvc2017需要编译的程序中引用webengineview模块&#xff0c;打包时候发现不能运行。 我们如何…

微服务集成测试 -华为OD机试真题(A卷、JavaScript)

题目描述 现在有n个容器服务&#xff0c;服务的启动可能有一定的依赖性&#xff08;有些服务启动没有依赖&#xff09;&#xff0c;其次&#xff0c;服务自身启动加载会消耗一些时间。 给你一个n n 的二维矩阵useTime&#xff0c;其中useTime[i][i]10表示服务i自身启动加载需…

Mac: 运行python读取CSV出现 permissionError

在MAC机器里&#xff0c;之前一直运行程序在某个指定的目录下读取excel和csv文件&#xff0c;没有出现错误&#xff0c;有一天突然出现错误&#xff1a;permissionError:[Errno 1] Operation not permitted&#xff0c; 具体错误信息如下&#xff1a; 经过调查得知&#xff0c…

UE5 学习笔记 FPS游戏制作30 显示击杀信息 水平框 UI模板(预制体)

文章目录 一制作单条死亡信息框水平框的使用创建一个水平框添加子元素调整子元素顺序子元素的布局插槽尺寸填充对齐 制作UI 根据队伍&#xff0c;设置文本的名字和颜色声明变量 将变量设置为构造参数根据队伍&#xff0c;设置文本的名字和颜色在构造事件中&#xff0c;获取玩家…

西门子TCP通讯过程中硬件连接突然断开

通信原理探秘又结合在工作中遇到的问题,关注到了通讯中的KeepAlive定时器的设置,所以做了如下实验。 硬件: 1513PLC TCP客户端 PC TCP服务器 前提条件:禁用PLC侧KeepAlive 程序: 测试流程: 打开PC端网络调试助手,设置为TCP服务器,打开链接; PC端打开WireShack软…

2025宁德时代测评Verify考什么?网申测评如何通过SHL笔试|附真题线上笔试考点、高分攻略、CATL新能源科技SHL测评宁德社招题目、面试攻略、求职建议

——职小豚 带你拆解新能源巨头招聘密码 一、宁德时代&#xff1a;新能源赛道「超级独角兽」 作为全球动力电池龙头&#xff0c;宁德时代&#xff08;CATL&#xff09;的江湖地位无需多言&#xff1a; 技术硬实力&#xff1a;麒麟电池、钠离子电池、无钴电池等黑科技加持&…

Spring Boot @RequestParam 解析参数时的常见问题及解决方案

1&#xff0c;遇到的问题&#xff1a;将后端接口写完后我想通过PostMan进行简单的测试一下&#xff0c;一不小心就遇到了这样的情况&#xff1a; org.springframework.web.bind.MissingServletRequestParameterException: Required Integer parameter contractId is not prese…

Firefox 浏览器同步一个账户和书签网址

Firefox 浏览器同步一个账户和书签网址 Firefox 支持跨设备接续浏览&#xff0c;可实现电脑、手机与平板无缝衔接。无论您在使用哪台设备上使用 Firefox&#xff0c;都能获取书签、浏览历史、保存的密码等信息。当然也能实现windows、ios、linux、android系统中安装firefox浏览…

Maven多模块项目,其他项目引用子模块的依赖,无法打包,提示没有找到依赖

背景&#xff1a; 微服务项目 每个服务都是单独的项目&#xff0c;会存在依赖关联的问题&#xff0c;在子模块的下面 depoly 之后&#xff0c;就会出现别的项目&#xff0c;无法package 原因&#xff1a; 多模块项目&#xff0c;depoly 需要在父模块下面执行

mediacodec服务启动时加载media_codecs.xml

media.codec服务启动时&#xff0c; 会创建 implementation::Omx 和 implementation::OmxStore&#xff0c; 构造 Omx时&#xff0c; 会解析codec相关的xml文件&#xff0c;一般从会如下目录中&#xff0c; // from getDefaultSearchDirs() { "/product/etc",&quo…

本地部署DeepSeek-R1(Dify压力测试和性能调优)

安装压测软件 为了有效测试&#xff0c;应在局域网设备测试&#xff0c;我这里用的服务器是局域网内的Ubuntu&#xff0c;下载的压测软件是WRK apt install wrk测试脚本 为了省事我直接在/root目录下新建lua脚本 vim test.lua脚本内容如下&#xff0c;app-xxxx更换为你工作…

自动备份文件到服务器,自动备份文件到服务器有哪些方法?

将SQL Server数据库自动备份文件到服务器&#xff0c;可以通过多种方法实现。以下是几种常用的方法&#xff1a; 一、使用SQL Server Management Studio&#xff08;SSMS&#xff09;和SQL Server代理 配置SQL Server代理&#xff1a;确保SQL Server代理服务已启动。如果未启…

Ollama+open-webui搭建私有本地大模型详细教程

Ollamaopen-webui搭建私有本地大模型详细教程 1. 什么是 Ollama&#xff1f; 1.1. Ollama 简介 ​ Ollama 是一个轻量级的 AI 模型运行时&#xff0c;专注于简化 AI 模型的部署和使用。它支持多种预训练模型&#xff08;如 Llama、Vicuna、Dolly 等&#xff09;&#xff0c;…

GPT-4o 原生图像生成技术解析:从模型架构到吉卜力梦境的实现

最近不少 AI 爱好者、设计师、Vlogger 在社交平台晒出了 GPT-4o 生成的梦幻图像&#xff0c;尤其是吉卜力风格的作品——柔和光影、日系构图、治愈色彩、富有情感的角色表达&#xff0c;一下子击中了无数人的“童年回忆 审美舒适区”。 &#x1f3a8; 下面是一些 GPT-4o 实际生…

测试cursor-AI编辑器

Cursor是一个免费的&#xff0c;内置AI插件的编辑器&#xff0c;在vscode基础上开发&#xff0c;可以创建和分析代码&#xff0c;还能提出修改建议。官网是 https://www.cursor.com/cn 载入SFTP的方式跟vscode是一样的&#xff0c;但是会有这样的报错&#xff1a; 报错&#x…

[首发]烽火HG680-KD-海思MV320芯片-2+8G-安卓9.0-强刷卡刷固件包

烽火HG680-KD-海思MV320芯片-28G-安卓9.0-强刷卡刷固件包 U盘强刷刷机步骤&#xff1a; 1、强刷刷机&#xff0c;用一个usb2.0的8G以下U盘&#xff0c;fat32&#xff0c;2048块单分区格式化&#xff08;强刷对&#xff35;盘非常非常挑剔&#xff0c;usb2.0的4G U盘兼容的多&a…

Spring Boot 快速入手

前言&#xff1a;为什么选择 Spring Boot&#xff1f; &#x1f680; 在现代 Java 开发中&#xff0c;Spring Boot 已成为最流行的后端框架之一。无论是小型 Web 应用、企业级系统&#xff0c;还是微服务架构&#xff0c;Spring Boot 都能提供快速开发、自动配置、轻量级部署的…

OpenAI最近放出大新闻,准备在接下来的几个月内推出一款“开放”的语言模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

基于PyQt5的自动化任务管理软件:高效、智能的任务调度与执行管理

基于PyQt5的自动化任务管理软件&#xff1a;高效、智能的任务调度与执行管理 相关资源文件已经打包成EXE文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xff0c;秉着…