私はGNU GSLライブラリを使ってRパッケージを開発中です。 GSLライブラリはhttp://www.stats.ox.ac.uk/pub/Rtools/libs.htmlからダウンロードされます。 x64とi386の両方でコンパイルすると、R CMDチェックに合格しました。ソースパッケージは、32ビットおよび64ビットのウィンドウにインストールすることもできます。すべて64ビットウィンドウで正常に動作します。Rパッケージ32ビット版と64ビット版のGSLライブラリの違いによるエラー?
しかし、パッケージの32ビットWindows上でクラッシュし、次のエラーメッセージを投げるが :
を「GSL :: \ BLAS \ blas.c 107エラー長デフォルトGSLのエラーハンドラが呼び出された」私は、元のソースコードをチェックします
gsl_vector_view ci = gsl_matrix_row (A, i);
gsl_vector_view ck = gsl_matrix_row (A, k);
Rprintf("cisize=%d\n,cksize=%d\n",ci.vector.size,ck.vector.size);
gsl_vector_view di = gsl_vector_subvector(&ci.vector, 0, i);
gsl_vector_view dk = gsl_vector_subvector(&ck.vector, 0, i);
Rprintf("disize=%d\n,dksize=%d\n",di.vector.size,dk.vector.size);
gsl_blas_ddot (&di.vector, &dk.vector, &sum);
エラーは、コードdi.vector.sizeによるgsl_blas_ddotとdk.vector.sizeの最後の行によって引き起こされます。窓64に
は、出力印刷は:
cisize=5
cksize=5
disize=1
dksize=1
およびWindows 32に、出力印刷が固定されていない、一つの出力は次のとおり
cisize=337939976
cksize=1
disize=0
dksize=326253992
別のouputをを
cisize=251898432
cksize=1
disize=0
dksize=151229056
あります
どこに問題があるのかを教えてください。
ありがとうございます!
gsl_vector *di=gsl_vector_alloc(i);
gsl_vector *dk=gsl_vector_alloc(i);
for(l = 0; l < i; l++)
{
gsl_vector_set(di,l,gsl_vector_get(ci,l));
gsl_vector_set(dk,l,gsl_vector_get(ck,l));
}
gsl_vector_free(di);
gsl_vector_free(dk);
は、しかし、私はまだ、なぜ下に動作しませんでした「gsl_matrix_row」知らない:
http://gnuwin32.sourceforge.net/packages/gsl.htmからGSLを使用して同じ問題が発生します。 – floodking