我正在用C做小波,幸运地找到了GSL-2.1。我试图在Code Composer Studio和Energia 15中为ARM Cortex-M处理器接口GSL-2.1。
#include <stdio.h>
#include <math.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_vector.h>
#include <gsl/gsl_blas.h>
#include <gsl/gsl_test.h>
#include <gsl/gsl_wavelet.h>
#include <gsl/gsl_wavelet2d.h>
int i, n=256, nc=20;
double data[256];
double abscoeff[256];
gsl_wavelet *w;
gsl_wavelet_workspace *work;
int main(){
w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4);
work = gsl_wavelet_workspace_alloc(256);
}
即使对于这段代码,编译器也给出了Energia 15中的以下错误。
error: 'w' does not name a type
error: 'work' does not name a type
代码编写器Studio显示以下错误
undefined first referenced
symbol in file
--------- ----------------
gsl_wavelet_alloc ./main.obj
gsl_wavelet_daubechies ./main.obj
gsl_wavelet_workspace_alloc ./main.obj
error #10234-D: unresolved symbols remain
我已经问过它这里,并尝试在代码中做一些修改。我不得不添加几乎5个c文件来减少#错误。现在我只有一个错误
" RETURN_IF_NULL undef symbol first referenced in ./main.obj "
当然,我需要在这里添加一个或多个.c文件,但我迷路了。你能帮我在这里添加哪个文件吗?任何帮助都会受到谴责。
发布于 2016-06-21 16:01:35
阅读文档,在我看来,缺少的宏(RETURN_IF_NULL(x) if (!x) { return ; }
)应该是由autoconf工具创建的,它使用configure.ac
中的信息,并添加到config.h
文件中,就像在config.h中一样。
在源代码中,在文件configure.ac
中,有一个指令:
AH_BOTTOM([#define RETURN_IF_NULL(x) if (!x) { return ; }
])
它指示autoconf在运行./configure
脚本后创建的config.h文件末尾添加宏(在我的OSX10.10,GSL-2.1上进行了测试)。
我猜在配置过程中出了点问题。如果您已经在的include目录中有一个配置文件,那么您可以在最后添加:
RETURN_IF_NULL(x) if (!x) { return ; }
或者您可以创建它,然后将它包含在您的源文件中。
https://stackoverflow.com/questions/37939595
复制相似问题