VS2019 编译GSL
下载GSL:https://github.com/BrianGladman/gsl,此仓库带有用于编译的VS解决方案。
解压后,在 build.vc 目录下有两个解决方案:
- gsl.dll.sln 用于编译生成动态库
- gsl.lib.sln 用于编译生成静态库
请先阅读 build.vc 目录下的说明文档 gsl.readme.txt 。
以编译静态库为例,介绍编译过程:
使用 Visual Studio 打开 gsl.lib.sln,可以看到四个Solution
在处理之前,需要修改solution的属性表(选中solution>鼠标右键 >Properties),修改 Platform Toolset (原仓库默认v143,但是我只装了v142,所以需要进行修改)
根据需要,修改四个solution的Platform Toolset.
参考gsl.readme.txt ,我们需要先生成 gslhdrs 解决方案。这个解决方案的作用是拷贝所有头文件到一个子文件夹 gsl,在生成之前,需要添加当前目录(即加压后的目录)到 include 搜索路径中:
点击 build > build gslhdrs,等待编译成功,可以在解压目录的 lib 中看到编译结果。
之后,选择 gsllib 或 cblaslib 其中一个进行build(未选中的一个会自动生成),之后生产的静态库输出路径在解压目录下的 lib 目录下:
静态编译有用的是 cblas.lib, cblas.pdb, gsl.lib, gsl.pdb.
类似的操作处理解决方案 gsl.dll.sln,输出动态库在解压目录的 dll 文件夹下:
动态编译有用的是 cblas.lib, cblas.pdb, cblas.dll, gsl.lib, gsl.pdb. gsl.dll.
VS2019配置GSL
编译完成后,对生成的库进行整理:
└── gsl271
├── dll 解压文件下的 dll
├── lib 解压文件下的 lib
└── include
└── gsl 解压文件下的 gsl
在解决方案的属性表,添加 include 搜索路径和 library 搜索路径:
添加依赖库:Linker>Input>Additional Dependencies
如果使用动态库,需要在设置运行环境:Debugging/Environment,添加 PATH=dll所在的路径
测试代码
#include <stdio.h>
#include <gsl/gsl_math.h>
int main() {
double x = 1.23;
double result = gsl_pow_2(x);
printf("The square of %.2f is %.2f\n", x, result);
return 0;
}