2017-09-09 21 views
1

私は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」知らない:

+0

http://gnuwin32.sourceforge.net/packages/gsl.htmからGSLを使用して同じ問題が発生します。 – floodking

答えて

0

私はエラーが「gsl_matrix_row」機能によって引き起こされたことがわかった、私は自分自身の機能を実装するためのコードを書き直し32ビットWindowsマシン。

関連する問題