前言
在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;
}
结果: