Hello, I hope I will not boring everyone with my question but I'm trying to use GSL with Borland C++ Builder v6. I saw on this mailing list some tips for this and I've done this :
A) downloading the last GSL v1.13 source and windows binaries ( http://ascendwiki.cheme.cmu.edu/Binary_installer_for_GSL-1.13_on_MinGW) B) change the include [gsl_types.h] #ifndef GSL_VAR #if defined(__BORLANDC__) || defined(__BCPLUSPLUS__) /* We have a Borland compiler It has __WIN32__ instead of WIN32 in MSVC, __DLL__ instead of _DLL in MSVC also add extern to the macro */ # ifdef __WIN32__ # ifdef __DLL__ # define GSL_VAR extern __declspec(dllexport) # else # define GSL_VAR extern __declspec(dllimport) # endif # else # define GSL_VAR extern # endif #else /* normal procedure */ etc... C) translate from the DLL to get a compatible C++Builder .LIB by implib -a -c libgsl-0.lib libgsl-0.dll implib -a -c libgslcblas-0.lib libgslcblas-0.dll (don't know why there is a -0.. but why not) D) create on the Builder IDE a small window with a TMemo // memoData // just to write a test result and use when opening the form the following code : #include <vcl.h> #pragma hdrstop #include "main.h" #define WIN32 __WIN32__ #include <gsl/gsl_types.h> #include <gsl/gsl_blas.h> //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { AnsiString string; double a[] = { 0.11, 0.12, 0.13, 0.21, 0.22, 0.23 }; double b[] = { 1011, 1012, 1021, 1022, 1031, 1032 }; double c[] = { 0.00, 0.00, 0.00, 0.00 }; gsl_matrix_view A = gsl_matrix_view_array(a, 2, 3); gsl_matrix_view B = gsl_matrix_view_array(b, 3, 2); gsl_matrix_view C = gsl_matrix_view_array(c, 2, 2); /* Compute C = A B */ gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, 1.0, &A.matrix, &B.matrix, 0.0, &C.matrix); string.sprintf("[ %g, %g\n", c[0], c[1]); memoData->Lines->Add(string); string.sprintf(" %g, %g ]\n", c[2], c[3]); memoData->Lines->Add(string); } sorry for this, this is standard builder code :-s E) compile and link with libgsl-0.lib libgslcblas-0.lib all is ok for compiling and linking (no Error) D) execute and... surprise .. :-s it doesn't work ! when executing, an error window appear with a RunTime Error ! this application has requested the Runtime to terminate .. etc... etc... So, it seem that it's not so simple to use gsl on other system than gcc (maybe QT ? have to check) The case is that I use to develop my softs on C++Builder v6 so. If someone should have tips and tricks to get someting working (or place to find the good static lib (without using dll) I will thank him (or her) a lot. Do you have any ideas ? Best for all -- Denis Glehen _______________________________________________ Help-gsl mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gsl
