第一次搭建环境遇以及遇到的问题(使用vs2022 x64 Windows下搭建环境,安装boost库、blaze库、lapack库、openblas库、tbb库)

前言

在GitHub上找了一个同心管机器人正逆运动学建模的C++代码,但是之前我都是用matlab和Python建模,第一次用C++建模,开始需要面临搭建环境的问题,搭建了4天总算完成了。。。

本文主要是分享我作为新手第一次搭建C++环境面对的问题,以及解决这些问题的方法。旨在为同为新手的同学提供一些启发,新手真的推荐跟我一起尝试搭建这个环境,如有错误之处还望大佬不吝赐教。

需要导入如下5个外部库

1、Boost

2、Blaze

3、LAPACK

4、openBLAS

5、TBB (Threading Building Blocks)

注意:

        1、不同库之间的安装方法是有区别的,不像Python安装、更新库很方便。但C++库安装归根结底就是找 .lib 文件和 include(有一些库可能不叫这个名字)文件夹里的.h头文件。

        2、vs2022安装外部库:主要就是这4步,有的库没有其中的某些步骤是正常现象!!!

                (1)右键项目->属性->配置属性->VC++目录->包含目录 添加include文件夹所在路径

                (2)右键项目->属性->配置属性->VC++目录->库目录 添加lib文件夹所在路径

                (3)右键项目->属性->配置属性->链接器->输入->附加依赖项 添加.lib文件名

                (4)有些库还有.dll文件(一般在bin文件夹下),需要把它放入你的项目文件夹下,否则会报如下错

1、Boost库

在官网上下载和你计算机系统一致的最新版就行,下载是压缩包形式的,需要解压。

安装方法如下,写的很详细,我安装的时候没有遇到问题。

C/C++ Windows环境下 boost 安装使用教程【学习笔记】_boost生成lib-CSDN博客

boost库测试代码:

#include <iostream>
#include <boost/smart_ptr.hpp>
#include <boost/timer/timer.hpp>

int main() {
    // 使用 boost::shared_ptr 创建智能指针
    boost::shared_ptr<int> sharedPtr(new int(42));

    // 输出智能指针所指向的值
    std::cout << "Shared pointer value: " << *sharedPtr << std::endl;

    // 使用 boost::timer::auto_cpu_timer 测量代码块执行时间
    {
        boost::timer::auto_cpu_timer timer;

        // 在这里放置你想要测量时间的代码
        for (int i = 0; i < 1000000; ++i) {
            // 一些计算
        }
    } // 在这个作用域结束时,计时器的析构函数将输出执行时间

    return 0;
}

结果:

2、Blaze库

下载,解压。这个库和上面的Boost库的安装方法就完全不一样!!!

比如我下载的是Blaze-3.8,打开这个解压后的文件夹,解压后的这个文件夹就是include。并且这个库没有.dll文件.lib文件,解压之后直接就可以用,不需要编译!!!

只需要在包含目录下加入这个文件夹的路径---图上的都是本人电脑上的目录,不代表就要一样。

blaze库测试代码:

#include <blaze/Math.h>
#include <iostream>
#include <stdio.h>

int main() {
    // 创建矩阵 A 和 B
    blaze::DynamicMatrix<double> A{ {1.0, 2.0, 3.0},
                                  {4.0, 5.0, 6.0},
                                  {7.0, 8.0, 9.0} };

    blaze::DynamicMatrix<double> B{ {9.0, 8.0, 7.0},
                                  {6.0, 5.0, 4.0},
                                  {3.0, 2.0, 1.0} };

    // 执行矩阵乘法 C = A * B
    blaze::DynamicMatrix<double> C = A * B;

    // 打印结果
    std::cout << "Matrix A:\n" << A << "\n\n";
    std::cout << "Matrix B:\n" << B << "\n\n";
    std::cout << "Matrix C (A * B):\n" << C << "\n\n";

    return 0;
}

结果: 

3、 LAPACK库

这个库的安装方法和前面的又不一样,需要编译,比较复杂,但还好有相关教程:

win10环境编译lapack-3.10.1与vs2022环境配置_lapack windows-CSDN博客

4、openblas库

直接进入GitHub的release页面,里面有预编译好的库文件,直接拿来用即可

Release OpenBLAS 0.3.25 version · OpenMathLib/OpenBLAS · GitHub

解压打开后就是标准的库文件,按照上面描述的方法导入到vs2022里即可。

 5、TBB库

直接进入GitHub的release页面,里面有预编译好的库文件,直接拿来用即可

Release oneTBB 2021.11.0 · oneapi-src/oneTBB · GitHub

解压后打开:对于2021版本,其中的redist就是bin文件夹,里面是.dll文件;文件里面的ia32对应x86,intel64对应x64,确定你要使用的vs编译平台!!!

 已有相关教程:

Intel TBB库+VS2019+WIN10配置_tbb下载-CSDN博客

测试代码:

#include <iostream>
#include <vector>
#include <tbb/tbb.h>
#include <tbb/blocked_range.h>
#include <tbb/parallel_for.h>

using namespace std;
using namespace tbb;

typedef vector<int>::iterator IntVecIt;

struct body
{
    void operator()(const blocked_range<IntVecIt>& r)const
    {
        for (auto i = r.begin(); i != r.end(); i++)

            cout << *i << ' ';
    }
};

int main()
{
    vector<int> vec;
    for (int i = 0; i < 10; i++)
        vec.push_back(i);

    parallel_for(blocked_range< IntVecIt>(vec.begin(), vec.end())
        , body());
    return 0;
}

结果: 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值