gsl_complex_mul中的链接错误

时间:2017-08-18 10:17:53

标签: c gsl

我已经开始在一个巨大的旧C项目中重新使用gsl。我已设法通过在属性> C / C ++>一般>其他包含目录中添加系统中的位置来添加库。

在我的代码中,我还包括以下内容:

#include "gsl/gsl_matrix.h"
#include "gsl/gsl_matrix_complex_double.h"
#include "gsl/gsl_matrix_complex_float.h"
#include "gsl/gsl_matrix_complex_long_double.h"
#include "gsl/gsl_math.h"
#include "gsl/gsl_spmatrix.h"
#include "gsl/gsl_complex.h"
#include "gsl/gsl_complex_math.h"
#include "gsl/gsl_inline.h"
#include "gsl/gsl_complex.h"

我现在可以使用gsl的大部分功能了。但在以下功能中:

void vector_complex_mul_elements(gsl_vector_complex *v1, gsl_vector_complex *v2)
{
    gsl_complex cpx1, cpx2, cpx3;
    GSL_SET_COMPLEX(&cpx1, 0, 0);
    GSL_SET_COMPLEX(&cpx2, 0, 0);
    GSL_SET_COMPLEX(&cpx3, 0, 0);

    if(v1->size != v2->size)
    {
        printf("Error: Lenght of arrays do not match.\n");
        return;
    }

    for(i=0; i < v1->size; i++)
    {
        cpx1 = gsl_vector_complex_get(v1, i);
        cpx2 = gsl_vector_complex_get(v2, i);
        //cpx3 = gsl_complex_mul(cpx1 , cpx2);
        gsl_vector_complex_set(v1, i, cpx3);

    }
}

当我取消注释该行时:

cpx3 = gsl_complex_mul(cpx1 , cpx2);

我收到以下错误:

  

错误LNK2001:未解析的外部符号“_log1p”。

     

错误LNK2001:未解析的外部符号“_log1p”。

     

错误LNK2001:未解析的外部符号“_hypot”。

     

错误LNK1120:2个未解析的外部引用。

我已经尝试过写它:

gsl_vector_complex_set(v1, i, gsl_complex_mul(cpx1 , cpx2));

然后我得到了这些错误:

  

错误LNK2019:在函数“_gsl_complex_logabs”中引用未解析的外部符号“_log1p”。

     

错误LNK2019:在函数“_gsl_complex_div”中引用未解析的外部符号“_hypot”。

     

错误LNK2001:未解析的外部符号“_log1p”。

     

错误LNK1120:2个未解析的外部引用。

这只是一个链接问题或我使用它的方式是错误的吗?

2 个答案:

答案 0 :(得分:1)

这些(lop1phypot)函数位于标准数学库中。你是否包括math.h并链接到它(-lm)?根据{{​​3}}。

答案 1 :(得分:1)

在我看来,您错误地链接了GSL库。 尝试以I showed的身份将GSL重新编译为dll并重新链接。