VS 2010 C++调用R类库

一、   安装R,并下载R的源代码

安装R:从R的网站下载并运行R-3.0.1-win32.exe,记住安装路径如:C:\Program Files\R\R-3.0.1

从R的网站下载R-3.0.1.tar.gz,并解压缩,将解压后的文件全部copy到安装路径C:\Program Files\R\R-3.0.1下,选择覆盖重复的目录

 

二、   安装对应版本的Rtools

运行Rtools30.exe,选择默认安装路径,组件全部安装。注意:选上选项,即改变系统环境变量

 

三、   用MinGW编译Rmath

3.1 生成 Rmath.dll

用cmd进入安装路径C:\Program Files\R\R-3.0.1

cd C:\Program Files\R\R-3.0.1

cd src\include

make -f Makefile.win config.h Rconfig.h Rmath.

如果报错,../gnuwin32/MkRules找不到,去对应目录下,有个同名的文件MkRules.rules,把后缀去掉

如果有个rmath.h找不到,从include 拷贝到src/include

cd ../nmath/standalone

make -f Makefile.win

然后看到一大串的编译输出,并在standalone文件夹下看到Rmath.dll 和 Rmath.def

 

3.2 生成Rmath.dll

首先为了用pexports,要安装MinGW的插件:

(如果没有设置好环境变量会找不到命令: )

下载mingw-utils-0.3.tar.gz(pexports在这里面),直接解压缩到c:\Rtools\MinGW\里面就可以了。运行:

pexports Rmath.dll > Rmath.exp

lib /def:Rmath.exp /out:Rmath.lib

 //貌似 lib 这个命令也会改Rmath.exp文件,所以只能执行一次,否则第二次生成出的lib文件是错误的

//MACHINE这个开关也很重要,要和c++工程的设置一致,否则编译会报load error错误

(说明1:

这里的lib是visual studio C++的命令,如果查不到这个命令, 请将安装visual studio C++的bin添加到环境变量PATH中,方法如下:

在Path后面加上如我的系统中是C:\Program Files\Microsoft Visual Studio 9.0\VC\bin。

 说明2:如果运行后跳出"没有找到mspdb100.dll。。。。。"

请将visual studio C++安装目录下的,如我的系统中C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\下的msobj100.dll、mspdb100.dll、mspdbcore.dll、mspdbsrv.exe拷贝到C:\Program Files\Microsoft Visual Studio 9.0\VC\bin下面)

然后我们就得到Rmath.lib了

 

四,在visual C++工程中调用Rmath库


4.1建立工程

建立一个win32 console的空的工程,Linker->Additional Libraries中添加Rmath.lib所在目录,工程Linker->Additional Dependencies中添加Rmath.lib,将Rmath.dll拷贝到工程的目录下,然后添加一个内容如下的main.cpp,就可以编译运行了:

main.cpp 内容:

#define MATHLIB_STANDALONE 1  //宏定义一定要,参考Rmath.h

#include <Rmath.h> //如果Rmath.h在默认系统路径下可以这样写,如果不在则包括目录路径

 

#include <stdio.h>

int main()

{

 

     printf("hello\n");

     double x = fmax2(3,2);

     double y = 0;

 

     printf("x = %lf",x);

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值