gpt4 book ai didi

c - 将 GNU 科学库与 Code::Blocks 一起使用时出错

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

我当前的 Code::Blocks(GNU GCC 编译器)设置有一个特别的问题。编译器似乎有选择地运行一些 GSL 函数,但由于某些原因,在命令执行其他 GSL 函数时似乎会出现很大问题。

例如,我从以下目的地提取了以下代码: https://www.gnu.org/software/gsl/manual/html_node/Example-programs-for-matrices.html

我假设因为代码来自 GNU 官方网站,所以代码是正确的:

#include <math.h>
#include <stdio.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_blas.h>

int
main (void)
{
size_t i,j;

gsl_matrix *m = gsl_matrix_alloc (10, 10);

for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
gsl_matrix_set (m, i, j, sin (i) + cos (j));

for (j = 0; j < 10; j++)
{
gsl_vector_view column = gsl_matrix_column (m, j);
double d;

d = gsl_blas_dnrm2 (&column.vector);

printf ("matrix column %d, norm = %g\n", j, d);
}

gsl_matrix_free (m);

return 0;
}

通过调试,我了解到错误的来源是下面一行:

d = gsl_blas_dnrm2 (&column.vector);

此时编译器崩溃并打印出以下错误信息:

进程返回 -1073741819 <0xC0000005>

我花了很多时间试图找出错误的来源,但遗憾的是没有取得太大的成功。我通常不确定为什么会发生崩溃。调试器不打印任何警告或错误消息。

最佳答案

我建议您可能有不匹配的 header 和库。可能安装了不止一个版本的 GSL。您在源代码中引用了一个版本的 header ,而链接器引用了其他版本的库。

我去查找 gsl_vector_view 的 typedef 并在此处结束,您甚至可以看出 this 版本甚至不支持 vector 成员属于那种结构类型。

您将收到此 0xC0000005 错误,通常是在您使用某些未初始化的指针时。不过,这并不是说您的指针在这里未初始化。我想说的是 &column.vector 的“vector ”位被解释为与预期不同的东西。

总而言之,我认为这是某种环境问题,可能与您的链接器设置有关?这里有一些关于如何配置这些的细节:http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/

希望这对您有所帮助。

关于c - 将 GNU 科学库与 Code::Blocks 一起使用时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24659573/

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