设为首页 加入收藏

TOP

C++中调用R Language的类库
2012-12-02 22:59:41 】 浏览:626
Tags:调用 Language

    一、   安装R,并下载R的源代码   点击下载R语言下载 官方安装版

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

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

    二、   安装对应版本的Rtools

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

    三、   用MinGW编译Rmath

    3.1 生成 Rmath.dll

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

    cd C:\Program Files\R\R-2.15-2

    cd src\include

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

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

    如果有个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++(www.cppentry.com)的命令,如果查不到这个命令, 请将安装visual studio C++(www.cppentry.com)的bin添加到环境变量PATH中,方法如下:

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

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

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

    然后我们就得到Rmath.lib了

    四,在visual C++(www.cppentry.com)工程中调用Rmath库

    4.1建立工程

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

    main.cpp 内容:

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

    #include <Rmath.h>

    #include <stdio.h>

    int main(int argc, char** argv)

    {

    printf("hello\n");

    double x = fmax2(3,2);

    double y = 0;

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

    }

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++ vector MSDN简单入.. 下一篇C++派生类与基类的转换

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目