Qt gsl库配置踩坑记录

想求解非线性方程组,之前使用拟牛顿法写过相关的matlab代码,这次想移植到C++代码,网上说gsl库挺好用的,于是我也想试一下。相关参考:

  1. 【C++】GSL(GNU Scientific Library) 的安装及在 Visual Studio 2017 中的使用
  2. QT5使用mingw64和mingw32编译数学库GSL
  3. 有没有C/C++解非线性方程组的库? - Narcissu的回答 - 知乎
  4. QT5环境下配置GSL数学库

配置:
我使用的是minGW7.3.0编译器(记得添加minGW的bin目录的环境变量),下载的是gsl2.5的版本,我在当前的目录使用cmd结果运行上述博客里说的:

./configure

结果报错,我检查了一下我的minGW,确实是安装了,问题出在我少装了msys,msys获取网站:
MinGW-builds,安装好以后运行msys目录下的msys.bat,cd进入到gsl 文件夹(在里面会看到configure文件),

./configure && make && make install

安装非常完美
在这里插入图片描述
然后把msys下面的include、lib和bin三个文件夹复制到自己的项目的目录下面,比如我这里使用的是Qt,再添加一个pri文件,把这些文件包含进来:

DEFINES += GSL_DLL

INCLUDEPATH += $$PWD/include

LIBS += -L$$PWD/lib -llibgsl
LIBS += -L$$PWD/lib -llibgslcblas

在工程的pro里记得也把这个pri文件包含进来:

INCLUDEPATH += $$PWD/gsl/ 
include($$PWD/gsl/gsl.pri)
DISTFILES += gsl/gsl.pri 

按上面参考4测试一下程序

#include <iostream>
#include <cmath>
#include <gsl/gsl_sf_bessel.h>
using namespace std;

int main(int argc, char *argv[])
{
    double x = 10.0;
    double y = gsl_sf_bessel_J0(x);
    cout << "J0(" << x << ") = " << y << endl;
	return 0;
}

完美
在这里插入图片描述
测试了一下参考3的关于gsl的代码,它提示说:

error: undefined reference to `__imp_gsl_multiroot_fsolver_hybrids

在参考2可以找到解决的方案,在include目录下找到对应的库,这里对应的明显是gsl_multiroots.h,然后我们进去这个文件,找到gsl_multiroot_fsolver_hybrids

注释掉的是原来的语句,我们把GSL_VAR 改为extern就可以了:

//GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrids;
extern const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrids;

然后记得clear项目然后重新构建,时间可能比较久,OK也跑起来了!
在这里插入图片描述
可以试着用这个库解非线性方程组了(心满意足)

相关推荐

  1. pytorch环境配置记录

    2024-04-24 04:00:03       35 阅读
  2. mySQL记录

    2024-04-24 04:00:03       65 阅读
  3. Pinia 记录

    2024-04-24 04:00:03       60 阅读
  4. golang记录

    2024-04-24 04:00:03       38 阅读
  5. kubernetes 记录

    2024-04-24 04:00:03       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-24 04:00:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-24 04:00:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-24 04:00:03       87 阅读
  4. Python语言-面向对象

    2024-04-24 04:00:03       96 阅读

热门阅读

  1. JVM(2)

    2024-04-24 04:00:03       203 阅读
  2. CUDA编程:其三、CUDA向量加法

    2024-04-24 04:00:03       36 阅读
  3. leveldb 键值数据库

    2024-04-24 04:00:03       39 阅读
  4. Spring源码中的简单工厂模式

    2024-04-24 04:00:03       41 阅读
  5. 【无标题】

    2024-04-24 04:00:03       39 阅读
  6. ionic 中对Input输入框、select下拉框进行solr检索

    2024-04-24 04:00:03       39 阅读
  7. C++ day1

    C++ day1

    2024-04-24 04:00:03      32 阅读
  8. LeetCode-11-盛最多水的容器

    2024-04-24 04:00:03       32 阅读
  9. npm——基本使用

    2024-04-24 04:00:03       39 阅读
  10. CUDA_cudaFree_释放Stream_cudaError_t 错误类型码解释

    2024-04-24 04:00:03       29 阅读
  11. 算法训练营day21

    2024-04-24 04:00:03       37 阅读
  12. springCloud是什么,怎么创建

    2024-04-24 04:00:03       35 阅读