最新消息:

vs2015 C++项目添加引入GSL库

C/C++ 大步 2673浏览 0评论

 

第一部分

 

一个师妹网上下了一个C++的算法,我帮她调试代码,这个算法分别用到了Eigen和GSL连个库。Eigen库还好,GSL库添加很麻烦,所以这篇文章说下如何在vs2015下将GSL库添加到项目中。

 

GSL库需要编译后得到dll文件等,vs编译GSL库的教程已经有了,我这就不说了,直接用别人编译号的dll等文件。

 

1.先下载已经编译好的GSL库

已编译好的GSL库下载:

这是其他网友编译好的,编译GSL过程见 http://blog.csdn.net/liyuanbhu/article/details/47685377

点击下载

 

假设我们将解压到F:\gsl 目录下,目录结构:

  • bin/        #里面是dll文件
  • include/  #里面是GSL的头文件
  • lib/   #里面是lib文件

 

 

 

2.假设已经在VS2015中创建了一个C++项目,代码如下:

 

 

 

 

 

3.修改项目属性中的配置

修改 VC++ Directories——>General,红色方框就是我们添加的内容,如图一:

 

修改C/C++——>General,如图2:

 

修改Linker——>General,见图3:

修改Linker——>General,见图4:

这里就是添加GSL的lib文件名字,就四个:

libgsl.dll.lib;
libgsl.lib;
libgslcblas.dll.lib;
libgslcblas.lib;

 

注意:这里不要写dll文件的名字,否则VS会报错“Error    LNK1107    invalid or corrupt file: cannot read at 0x2E0”。

 

4.编译代码

如果此时VS没有提示项目有错误,那么就可以试着编译,就会提示编译成功。

 

关于GSL的教程就完了!!!

 

附加内容:关于VS2015导入MACOED算法代码

 

MACOED算法

 

 

1.VS2015导入MACOED算法遇到的问题

 

A.提示Eigen头文件不存在

解决办法:导入Eigen库的方法,自己可以百度解决

 

B.提示GSL头文件不存在

解决办法:见该文章的第一部分

 

C. 提示 “ C4996 'strcpy': This function or variable may be unsafe”错误

完整报错:Severity Code Description Project File Line Suppression State Error C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

 

解决办法:因为MACOED代码中用到了strcpy,而这个函数不安全,被抛弃了。但是我们不想改,又想成功编译,就需要修改VS2015的设置了。在 项目属性——>配置属性(Configuration Properties)——>C/C++——>Preprocessor——>Preprocessor Definitions中添加_CRT_SECURE_NO_WARNINGS。如图5:

 

D.MACOED算法编译成功,但是执行exe的时候报错

完整报错:无法启动此程序,因为计算机中丢失libgcc_s_dw2-1.dll ,libgslcblas-0.dll ,libgsl-0.dll 。

 

解决办法:这是因为MACOED算法执行需要dll文件,但是编译后导出的目录里没有这些文件,所以我们需要将这三个文件拷贝到编译后的exe的所在目录,然后就可以执行了。

注意:

libgslcblas-0.dll ,libgsl-0.dll 在 gsl/bin目录中。

而libgcc_s_dw2-1.dll可能要去网上下载一个,我是从网上下载的。

 

MACOED算法导入教程完!

 

 

转载请注明:大步's Blog » vs2015 C++项目添加引入GSL库

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
SiteMap