2014-09-19 10 views
0

MinGW32 및 OpenBLAS를 사용하여 Windows 32에서 Armadillo C++ 라이브러리를 컴파일하려고합니다.컴파일/링크시 Armadillo 래퍼를 비활성화 할 수 없습니다.

주제에 대한 모든 자습서 및 stackoverflow.com 질문을 시도했지만 여전히 'sdot_'에 대한 정의되지 않은 참조와 같은 링크 오류를 생성하는 wrapper.obj의 컴파일을 비활성화 할 수 없습니다. 래퍼에서 찾을 수없는 BLAS 기호입니다.

다른 BLAS/LAPACK 라이브러리가 설치되어 있지 않으며 cmake 출력에 libopenblas.dll이 발견되었습니다.

어떻게하면 wrapper.obj의 컴파일과 링크를 비활성화 할 수 있습니까? config.hpp를 편집해도 아무런 효과가 없습니다.

답변

2

아르마딜로를 사용하기 위해 cmake 기반 설치 프로그램을 사용할 필요가 없습니다. 설치 프로그램은 단순히 BLAS 및 LAPACK과 링크되는 래퍼 라이브러리를 만듭니다. 대신 직접 BLAS 및 LAPACK와 아르마 기반 프로그램을 연결할 수 있습니다

g++ prog.cpp -o prog -O2 -I armadillo-4.500.0/include -DARMA_DONT_USE_WRAPPER -DARMA_USE_BLAS -DARMA_USE_LAPACK -lblas -llapack 

변경 armadillo-4.500.0/include를 지점으로 아르마 폴더가있는 (가) 있습니다.

+0

먼저 Armadillo를 컴파일/링크해야합니까? 나는 이해할 수 있을지 모르겠다. 미안하다. 나는이 단계에서 실제로 Armadillo를 컴파일/링크 할 수 없으며, 내가 제공 할 수있는 BLAS/LAPACK 라이브러리의 심볼을 허용하지 않습니다. OpenBLAS도 성공하지 못했습니다. – lsdavies

+0

Armadillo는 템플릿 라이브러리 (즉, C++ 헤더)입니다. 템플릿 라이브러리는 전통적인 의미로 컴파일 할 필요가 없습니다. Armadillo의 두 번째 및 선택적 부분은 BLAS 및 LAPACK에 대한 단순한 래퍼 인 런타임 라이브러리입니다. 런타임 라이브러리없이 Armadillo 헤더를 사용할 수 있습니다. 위에서 설명한대로 LAPACK 및 BLAS와 직접 연결하십시오. – mtall