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

标签 c++ gcc g++ rcpp rinside

我让 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/

相关文章:

mysql - 未定义对 `mysql_get_client_info' 的引用

c++ - __attribute__ ((__packed__)) 对嵌套结构的影响是什么?

c++ - 堆栈模板不编译推送功能

c++ - 模板函数中的静态对象是否有链接?

c++ - 在 C/C++ 中打印所有环境变量

c++ - 仅 header 文件中的静态 const 整数类成员 - 正确的方法?

c++ - 依赖外部库的CMake导出包

c++ - 将图像调整为正方形但保持纵横比 c++ opencv

c - 使用 dlfcn.h 库函数时出现无效的 ELF header 错误

c++ - (g++) 剥离函数名