May 04, 2004
I am trying to call a CBLAS routine from my D program. The C function requires some enums, and I'm not sure how to do this. I thought I could just define the enums in my D code, like this:

extern (C) enum CBLAS_ORDER
   {CblasRowMajor=101, CblasColMajor=102 };
extern (C) enum CBLAS_TRANSPOSE
   {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113, AtlasConj=114};

extern (C) cblas_dgemm( CBLAS_ORDER Order, CBLAS_TRANSPOSE TransA,
                       CBLAS_TRANSPOSE TransB,  int M,  int N,
                       int K,  double alpha,  double *A,
                       int lda,  double *B,  int ldb,
                       double beta, double *C,  int ldc);


(I wasn't sure whether I needed the extern(C) for the enums, so I tried with and without.)
I am getting this error when I compile:

linearalgebra.d(7): found 'Order' when expecting ')'
linearalgebra.d(7): semicolon expected, not 'TransA'
linearalgebra.d(7): no identifier for declarator


What am I doing wrong?

Drew

May 04, 2004
Sorry, I'm really dumb. I see I left out the 'void' in the function signature :-(

Drew

On 2004-05-04 15:20:53 +0200, Drew McCormack <drewmccormack@mac.com> said:

> 
> I am trying to call a CBLAS routine from my D program. The C function requires some enums, and I'm not sure how to do this. I thought I could just define the enums in my D code, like this:
> 
> extern (C) enum CBLAS_ORDER
>     {CblasRowMajor=101, CblasColMajor=102 };
> extern (C) enum CBLAS_TRANSPOSE
>     {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113, AtlasConj=114};
> 
> extern (C) cblas_dgemm( CBLAS_ORDER Order, CBLAS_TRANSPOSE TransA,
>                         CBLAS_TRANSPOSE TransB,  int M,  int N,
>                         int K,  double alpha,  double *A,
>                         int lda,  double *B,  int ldb,
>                         double beta, double *C,  int ldc);
> 
> 
> (I wasn't sure whether I needed the extern(C) for the enums, so I tried with and without.)
> I am getting this error when I compile:
> 
> linearalgebra.d(7): found 'Order' when expecting ')'
> linearalgebra.d(7): semicolon expected, not 'TransA'
> linearalgebra.d(7): no identifier for declarator
> 
> 
> What am I doing wrong?
> 
> Drew