gpt4 book ai didi

c++ - 让 RInside 示例使用额外的链接器选项 -framework

转载 作者:行者123 更新时间:2023-11-30 04:12:09 26 4
gpt4 key购买 nike

我让 RInside 示例运行并工作,但我必须手动添加链接器选项:g++ 末尾的“-F/Library/Frameworks/R.framework/.. -framework R”(在带有 Xcode 3.x 的 Mac Snow Leopard 10.6.8 上)。它有效,但我不知道为什么。谁能说说这些选项是什么实际上呢?我无法在此列表中找到它:http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

原代码如下:

#include <RInside.h>                    // for the embedded R via RInside

int main(int argc, char *argv[])
{
RInside R(argc, argv); // create an embedded R instance
R["txt"] = "Hello, world!\n"; // assign a char* (string) to 'txt'
R.parseEvalQ("cat(txt)"); // eval the init string, ignoring any returns
exit(0);
}

这是我在 NetBeans 中看到的链接器调用:

g++ -o dist/Debug/GNU-MacOSX/callingrproject build/Debug/GNU-MacOSX/main.o - L/Library/Frameworks/R.framework/Resources/lib -L/Library/Frameworks/R.framework/Resources/library/Rcpp/lib -L/Library/Frameworks/R.framework/Resources/library/RInside/lib -L/Library/Frameworks/R.framework/Libraries -L/Library/Frameworks/R.framework/Resources/lib -L/Library/Frameworks/R.framework/Resources/library -L/Library/Frameworks/R.framework/Resources/modules -lRcpp -lRInside -lRlapack -lRblas -F/Library/Frameworks/R.framework/。 .-框架R

最后一部分是我必须手动添加的。否则我会得到这两个链接错误:

Undefined symbols:
"_Rf_mkString", referenced from:
Rcpp::wrap(char const*)in main.o
"_R_NilValue", referenced from:
Rcpp::wrap(char const*)in main.o

最佳答案

框架或多或少是一种打包应用程序的 Mac 方式。这些应用程序可能包含我们要使用的代码+ header +库。线路

-F/Library/Frameworks/R.framework/..

说,“在文件夹 /Library/Frameworks 中查找任何指定的框架”,以及

-framework R

说,“在‘frameworks’目录集合中寻找文件夹R.framework”。

请注意,-framework R 参数实际上是由 ld 处理的,而不是 gcc/clang,所以您可以在 man ld 中找到更多信息。另一方面,-F 参数gcc/clang 处理。它们一起允许您的编译器和链接器找到所需的头文件和库。

特别是,在 Mac 上,它们(默认情况下)位于 /Library/Frameworks/R.framework/Headers/Library/Frameworks/R.framework/Libraries -- 这些是通过设置适当的框架标志搜索的目录。

此处提供有关 -F argument 的更多信息和 -framework argument .

关于c++ - 让 RInside 示例使用额外的链接器选项 -framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19909868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com