gpt4 book ai didi

c - 我该如何修复这个 C 代码/BLAS 错误?

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:51 24 4
gpt4 key购买 nike

我正在尝试编写一个使用 R 中的 BLAS 库的 c 函数(稍后将在 R 脚本中使用)

#include <stdio.h>
#include <R.h>
#include <R_ext/BLAS.h>

void foo(int *dimension, double *vect1, double *vect2)
{
const int dim = dimension[0];
const int incxy = 1;

//swaps two vectors
F77_NAME(dswap)(&dim,vect1,&incxy,vect2,&incxy);
}

我编译代码使用:

R CMD SHLIB foo.c

我得到错误:

foo.o:foo.c:(.text+0x41): undefined reference to `dswap_'

我错过了什么?

最佳答案

包含头文件与链接库不同。

我实际上对 R 一无所知,但我做了一些搜索并找到了 http://cran.r-project.org/doc/manuals/R-exts.html#Creating-shared-objects这表明您需要 BLAS_LIBS 变量——如果您不使用 makefile,那么看起来您只需获取命令“R CMD config BLAS_LIBS”的输出,然后将输出包含在命令行中。您也可以将它添加到 PKG_LIBS 变量中,但我对 R 的了解还不够确定。

编辑:

have set file Makevars.win to include

PKG_LIBS=$(BLAS_LIBS) 
PKG_LIBS=$(LAPAK_LIBS)

用 LAPAK_LIBS 替换 PKG_LIBS 变量。尝试使用 += 而不是 =。

关于c - 我该如何修复这个 C 代码/BLAS 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5544802/

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