我试图从这里找到的. to /..dll库生成一个.to/..dll:http://www.cgplibrary.co.uk/files2/Download-txt.html
我对从这个库生成一个包没有兴趣,只是为了生成一个. no /..dll,它可以在R中使用以提供一些额外的功能。
我成功地通过以下方法创建了R包装器和.R文件:
swig -r cgp.i使用从CGP-Library github存储库检索的.i文件,在这里:https://github.com/AndrewJamesTurner/CGP-Library
我设法安装了RTools:
> find_rtools(T)
Scanning path...
ls : C:\Rtools\bin\ls.exe
gcc: C:\Rtools\GCC-46~1.3\bin\gcc.exe
VERSION.txt
Rtools version 3.1.0.1942
Version: 3.1
[1] TRUE并设置路径以包含适当的目录:
C:\Rtools\bin;C:\Rtools\gcc-4.6.3\bin;C:\R\R-3.0.2\bin\i386;%SystemRoot%\system32;
%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;
C:\Program Files\QuickTime\QTSystem\;%SDS_ALGO_PATH%;C:\Program Files\MySQL\MySQL Utilities 1.4.3\;
C:\Program Files\MySQL\MySQL Utilities 1.4.3\Doctrine extensions for PHP\;
C:\Program Files\CodeBlocks\MinGW\bin; C:\swigwin-3.0.5\;当我跑步时:
R CMD SHLIB cgp_wrap.c该命令运行,但只提供给我cgp_wrap.o文件,而不给出cgp_wrap.so/cgp_wrap.dll。
我得到了一串我猜是例外的东西(看起来是这样的):
cgp_wrap.o:cgp_wrap.c:(.text+0x561b): undefined reference to `_imp__repeatCGP'
cgp_wrap.o:cgp_wrap.c:(.text+0x58a9): undefined reference to `_imp__runCGP'
cgp_wrap.o:cgp_wrap.c:(.text+0x5b19): undefined reference to `_imp__copyChromoso
me'数量太多了,看起来cgp_wrap.c中的每个函数都可能返回一个未定义的引用。
我对此非常陌生(创建库并尝试与R接口),我花了将近一周的时间才走到这一步。但现在我迷路了。我不知道从这里往哪里走。
政策协商组-图书馆已经有几年了,我找不到任何可能表明它坏了的东西,这使我得出一个显而易见的结论,那就是这是一个PEBCAK问题。
如果有人能在心里找到同情我,伸出援助之手,那就太棒了(也让你很棒!)
是的,我运行的是32位Windows 7和R-3.0.2 ( Rstudio 0.98.1091)。
干杯
编辑:我还尝试在假设它是一个c++库(而不是c)的前提下运行它,使用SWIGWIN中的follwing:
swig -c++ -r -o example_wrap.cpp example.i这除了在cmd中提供稍微不同的消息(但本质上是相同的)之外,没有什么不同。
发布于 2015-03-15 01:50:46
那绝对是PEBCAK。也是个很下流的人。事实证明,在半途而废之前,我不仅还有很长的路要走,而且文档有时还远未完成。
对于那些希望从现有的C源代码和现有的dll编译R兼容的dll的人来说,尝试一下(对于那些在阅读这篇哈哈的时候眼睛滚动的人来说,很抱歉)
swig -r example.i
-this将生成wrap_example.c和example.R文件
gcc -shared example_wrap.c example.c -I"full\path\to\R\include" -L"full\path\to\R.dll" -lR -lexample -o example.dll
-this将从SWIG R包装的C库中生成一个新的dll。
要注意的是确保包含文件和原始C源代码文件具有相同的名称,并且位于SWIG目录中。您可以指定到现有dll的完整路径,也可以将其放在SWIG目录中。
非常感谢伊恩·贝尔帮我照看孩子。您可以在这里找到他的GitHub回购(https://github.com/ibell),其中有几个用于SWIG/minGW的工作示例,并通过SWIG/minGW (全部用于R)从Linux交叉编译到Windows。
https://stackoverflow.com/questions/28847348
复制相似问题