VS2012配置64bit的GSL

来源:互联网 发布:淘宝白酒真假 编辑:程序博客网 时间:2024/05/21 10:12




参考网站:http://blog.csdn.net/meanwe712/article/details/22869199


http://anony3721.blog.163.com/blog/static/51197420124204843451

http://www.cnblogs.com/suda/archive/2012/03/03/2378644.html

http://blog.sina.com.cn/s/blog_6e0693f70100u2ve.html


一、下载64bit的gsl:

       https://code.google.com/p/oscats/downloads/detail?name=gsl-1.15-dev-win64.zip&can=2&q=

二、编译lib文件:

在bin文件夹可以得到libgsl-0.dll和libgslcblas-0.dll,lib文件夹中却找不到我们需要的导入库libgsl-0.lib

和libgslcblas-0.lib。我们需要手动生成libgsl-0.lib和libgslcblas-0.lib。

1、生成lib文件。发现安装目录lib下并没有libgsl.lib,libgslcblas.lib这两个文件,倒是有两个扩展名为def和a(linux下库文件包格式)的文件,因此必须进行转换。


在网上找到了两种方法:

(a)开始菜单,要用VS带的CMD命令行去跑,不能用windows系统下的CMD!!!

 

  进入gsl库的lib目录下依次输入以下两条语句:
    lib /machine:i386 /def:libgsl-0.def
    lib /machine:i386 /def:libgslcblas-0.def

再看lib目录下,发现有了libgsl.lib,libgslcblas.lib这两个文件。


(b)

由于需要生成64位lib,所以我们打开Visual Studio x64 Win64 Command Prompt。

 

   4).进入C:\MANUS\ProgramFiles\GSL_64\bin文件夹,首先我们通过dll和dumpbin来生成def文件。
       输入命令dumpbin.exe /exports libgsl-0.dll /out:libgsl-0.def
       生成libgsl-0.def文件,我们随后要修改这个文件。
       输入命令dumpbin.exe /exports libgslcblas-0.dll/out:libgslcblas-0.def
       生成libgslcblas-0.def文件,这个文件也需要被修改。
Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安装及使用64位gsl库
    5).下面讲介绍一下如何修改生成的def文件,这里我们以libgsl-0.def为例。内容参考了http://xass.blog.163.com/blog/static/5616839920110710279783/。我们首先打开libgsl-0.def,Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安装及使用64位gsl库
      将开头如下内容全部删除
Dump of file libgsl-0.dll
File Type: DLL
  Section contains the following exports forlibgsl-0.dll
    00000000characteristics
    4BF53736time date stamp Thu May 20 09:20:54 2010
       0.00 version
          1 ordinal base
       4087 number of functions
       4087 number of names
    ordinal hintRVA     name
       然后输入"EXPORTS"Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安装及使用64位gsl库       
       同时把"            0 001A09EC"这些前缀也删除,最后得到如下结果。Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安装及使用64位gsl库
     注意文件尾如下内容也要删除掉。
  Summary
       1000 .CRT
       1000 .bss
      18000 .data
      24000 .edata
       2000 .idata
      1F000 .rdata
       1000 .reloc
     1D0000 .text
       1000 .tls
    
     完成对libgsl-0.def的修改后,我们可以用同样的步骤修改libgslcblas-0.def。如果def文件很大的话,手动修改很繁琐,这时我们可以把def文件导入到excel中,这样改起来只要删除特定的行列就好了。4),5)两步很繁琐。也可以在MinGW上直接调用 pexports libgsl-0.dll >libgslclbas-0.def,这就是MinGW的方便之处了。

    6).完成对libgsl-0.def和libgslcblas-0.def的修改后,我们可以在commandline执行如下语句生成导入库libgsl-0.lib和libgslcblas-0.lib。
       输入命令lib /machine:AMD64 /def:libgsl-0.def
       生成libgsl-0.lib文件。
       输入命令lib /machine:AMD64 /def:libgslclbas-0.def
       生成libgslcblas-0.lib文件。Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安装及使用64位gsl库       
       这里AMD64代表我们使用x64平台。具体说明可见http://www.geoffchappell.com/viewer.htm?doc=studies/msvc/link/lib/options/machine.htm




 2、将x:\Program Files\GnuWin32l\bin中的libgsl.dll和libgslcblas.dll复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\Bin;将\include整个Gsl目录复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\include下;\lib目录下的所有.lib文件全部复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\Lib下。

(如果这样添加了其实下面指定的前两个都不需要,因为在系统中已经有了这些文件,但不建议按这种方法指定,这样会使系统VC库中的东西非常混乱,强烈建议使用下面这种指定路径的方法!!)



在Project -> tracking-> Configuration Properties -> C/C++ -> General -> Additional Include Directories 中增加头文件路径。


在Project -> tracking -> Configuration Properties -> C/C++ -> General -> Additional Library Directories 中增加库文件路径。


 在Project -> tracking  -> Configuration Properties -> Linker -> Input -> Additional Dependencies 中增加所依赖的库文件libgsl.lib和libgslcblas.lib。


重要tips:需要在c/c++的command line里添加  /D "GSL_DLL"


0 0
原创粉丝点击