【发布时间】:2014-07-09 16:56:01
【问题描述】:
我当前的 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
我花了很多时间试图找出错误的根源,但遗憾的是没有取得太大的成功。我通常不确定为什么会发生崩溃。调试器不打印任何警告或错误消息。
【问题讨论】:
-
你做了什么调试?它是在运行时崩溃还是编译失败?在我的 linux 系统上,它使用
gcc gsl.c -lm -lgsl -lgslcblas成功编译并运行良好 -
您确定您的意思是“编译器”崩溃了吗?
-
我的错误,我的意思是程序本身在执行时崩溃。我正在使用编译然后立即运行程序的应用程序(代码块)。代码编译成功。当我说调试时,我的意思是我使用了 print 语句来确定执行流程终止的确切点。这是在 'd = gsl_blas_dnrm2 (&column.vector);' 行处
-
我为你的错误做了一个快速的谷歌搜索,这是很常见的cboard.cprogramming.com/cplusplus-programming/… 这个页面有一些诊断提示。
-
您使用的是什么操作系统?好像是windows下的一个已知问题...forums.codeblocks.org/index.php/topic,8675.msg63238.html
标签: c matrix codeblocks gsl