Использование OpenBLAS LAPACKE в Visual Studio

Мне нужна линейная алгебра в моем проекте, и я хочу использовать для этого OpenBLAS. Я скачал предварительно скомпилированную версию (64-битная версия) и распаковал ее в папку с проектом. . В Visual Studio я добавил папки include, bin и lib в свой проект и запустил этот пример без проблем.

Затем я хотел взглянуть на LAPACK, поэтому я добавил lapacke.h в include, который находится в том же каталоге, что и cblas.h, и включен в официальную загрузку. Но теперь я получаю сотни ошибок для каждой функции, как будто файл lib отсутствует или что-то в этом роде. Например. для этой строки

85 lapack_complex_float lapack_make_complex_float( float re, float im );

я получил

PATH\include\lapacke.h(85): error C2146: syntax error: missing ';' before identifier 'lapack_make_complex_float'

Я не могу найти никакой дополнительной информации о том, как настроить OpenBLAS/LAPACK, обычно они просто говорят «включить файлы», что у меня есть. В противном случае пример cblas также не запустится. И (соответствующие) примеры, которые я могу найти, используют только cblas.h, а не lapacke.h

Может кто-нибудь сказать мне, что я делаю неправильно?


person Thorsten Schmitz    schedule 27.11.2017    source источник
comment
По какой-то причине мой «Привет» в начале отсутствует и не может быть добавлен с помощью редактирования. так ПРИВЕТ, и кто-нибудь знает, почему он отсутствует?   -  person Thorsten Schmitz    schedule 28.11.2017


Ответы (1)


Проблема в том, что OpenBlas по умолчанию использует C99 _Complex. Это не поддерживается Visual C++. Вы можете решить эту проблему, используя определения стандартных библиотек перед включением lapacke.h:

#include <complex>
#define lapack_complex_float std::complex<float>
#define lapack_complex_double std::complex<double>
#include <lapacke.h>
person Leonardo Quevedo    schedule 18.10.2019