制作模板网站自己怎么开电商平台
一.MSYS2安装
1.介绍
MSYS2 是一个为 Windows 系统提供 Unix 环境的软件开发平台,基于 MinGW 和 MSYS 项目,旨在简化跨平台开发流程。
官网:https://www.msys2.org/
2.具体安装方法请见上篇文章:MSYS2功能、用途及在win10下安装
二.gsl-2.8介绍
1.gsl-2.8简介
全称:GNU Scientific Library(GSL)
版本:当前稳定版为 2.8(发布于 2024 年 5 月)。
定位:专为 C 和 C++ 程序员设计的开源数值计算库,提供广泛的数学算法和工具。
许可证:遵循 GNU GPL,允许自由使用、修改和分发,但需保持代码开源(禁止闭源商业再分发)。
官网:https://www.gnu.org/software/gsl/
2.核心功能与特性
GSL-2.8 包含 1000+ 函数,覆盖以下领域:
基础数学
复数运算、多项式求根、特殊函数(如贝塞尔函数、伽马函数)。
线性代数
向量 / 矩阵操作、矩阵分解(LU、QR)、特征值 / 特征向量计算。
数值分析
数值积分、微分方程求解、插值与拟合、快速傅里叶变换(FFT)。
随机与统计
伪随机数生成、多种概率分布(正态、泊松等)、准随机序列、统计量计算。
优化与拟合
最小二乘拟合、非线性优化、模拟退火算法。
其他工具
小波变换、稀疏矩阵支持、物理常数数据库。
三.gsl-2.8编译为windows库
1.打开安装好的:MSYS2 MINGW64 命令窗口,然后执行编译命令:
cd /D/gsl-latest/gsl-2.8 //D盘下
./configure --prefix=/D/gsl-latest/gsl-2.8/build
make
make install
编译结果:
2.生成lib文件
(1)需要下载pexports.exe
https://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/pexports-0.47/
然后把pexports.exe放到上面编译生成的dll目录下,执行命令:
pexports libgsl-28.dll >libgsl-28.def
pexports libgslcblas-0.dll >libgslcblas-0.def
(2)编译生成lib文件
方式一:在VS安装目录下的VC\bin文件夹下可以找到lib.exe文件
或者 在搜索框中输入X64 Native Tools Command Prompt for VS 2022,单击打开可以直接调用lib.exe。
lib /machine:X64 /def:libgsl-28.def
lib /machine:X64 /def:libgslcblas-0.def # 64位
方式二:dlltool.exe可在 MSYS2安装目录下的MinGW\bin文件夹下找到,并执行以下命令进行转换:
D:\msys64\mingw64\bin\dlltool --dllname libgsl-28.dll --def libgsl-28.def --output-lib libgsl-28.lib
D:\\msys64\mingw64\bin\dlltool --dllname libgslcblas-0.dll --def libgslcblas-0.def --output-lib libgslcblas-0.lib
说明:dlltool.exe最好用绝对路径,因为其需要同目录下的其他文件
3.生成结果:
(4)vs2022下测试代码
#include <stdio.h>
#include <gsl/gsl_complex.h>
#include <gsl/gsl_complex_math.h>
#pragma comment(lib, "libgsl-28.lib")
#pragma comment(lib, "libgslcblas-0.lib")
int main(void)
{
gsl_complex a;
gsl_complex b;
GSL_REAL(a) = 1.0;
GSL_IMAG(a) = 2.0;
GSL_SET_COMPLEX(&b, 3.0, 4.0);
printf("%f+%f\n", GSL_REAL(a), GSL_IMAG(a));
printf("%f+%f\n", GSL_REAL(b), GSL_IMAG(b));
return 0;
}
3.总结
许多基于C语言和C++语言的开源项目库都是在Linux系统中采用gcc编译器开发的,因而在Windows环境下确实较难重新构建,这里利用MSYS2提供的Linux环境便于对开源项目GSL进行生成构建,得到动态链接库dll,利用pexports.exe+dlltool.exe(gcc)或者pexports.exe+lib.exe(vs)(这两种方式任选一种)可将dll转换为lib,从而在Microsoft Visual Studio中进行链接和调用,经过实测,这两种方式生成的lib文件尽管大小不同,但都能够调用执行,因为运行时本质上都有dll文件。
MinGW(gcc)可支持静态库.a和动态链接库**.dll**;而Visual Studio(msvc)仅支持动态链接库.dll,因此需要使用导入库.lib。
四.gsl库vs编译的其他方法 ---不推荐
1.windows下编译好的gsl库,但是版本太低,只有gsl-1.8的库;
https://gnuwin32.sourceforge.net/packages/gsl.htm
2.GSL官网也明确指出一些开发者提供了一些方法可轻松地在Windows平台上构建GSL库,详情见Building GSL on Windows Using Native Tools中的四种方法。
https://www.gnu.org/software/gsl/extras/native_win_builds.html
(1)Cmake的方法可以尝试,但显示支持到vs2017,用的版本也是GSL2.7
https://github.com/ampl/gsl