2017-07-07 180 views
0

我正在使用Qt Creator進行開發。我想使用Armadillo線性代數庫。因此,我在我的pro文件中使用了以下代碼:將OpenBLAS與Qt Creator項目鏈接起來

INCLUDEPATH += C:\armadillo-7.950.1\include 

LIBS += \ 
    -LC:\armadillo-7.950.1\examples\lib_win64 \ 
    -llapack_win64_MT \ 
    -lblas_win64_MT 

這一切都很好,項目編譯和鏈接正確。接下來的任務是用OpenBLAS替換LAPACK和BLAS。所以親文件發生了改變如下:

INCLUDEPATH += C:\armadillo-7.950.1\include \ 
      C:\OpenBLAS-v0.2.19-Win64-int32\include 

LIBS += \ 
    -LC:\OpenBLAS-v0.2.19-Win64-int32\lib \ 
    -llibopenblas 

現在我收到的錯誤:LNK1104:無法打開文件「libopenblas.lib」。我已經下載了OpenBLAS的windows二進制文件。已安裝的文件夾結構如圖所示:installed OpenBLAS folder

請讓我知道哪裏出了問題?

謝謝。

+0

您好,歡迎堆棧溢出,請花時間去通過[歡迎遊覽](https://stackoverflow.com/tour)瞭解你在這裏的方式(並獲得你的第一個徽章),閱讀如何創建[最小,完整和可驗證的示例](https:// stackoverflow.com/help/mcve),並檢查[如何提出好問題](https://stackoverflow.com/help/how-to-ask),以便增加獲得反饋和有用答案的機會。 – DarkCygnus

回答

0

有兩個原因針對此問題:

  1. 的.lib文件的怪異命名爲libopenblas.dll.a即使包被稱爲窗口二進制文件。
  2. 不完整的二進制包----它不包含所有需要的DLL

解決方案:

  1. 選擇一個二進制----贏得64或Win32和下載。

  2. 重命名libopenblas.dll.a作爲libopenblas.lib作爲尤里曾建議

  3. https://sourceforge.net/projects/openblas/files/v0.2.14/下載所需的丟失的DLL正在古怪命名的zip文件「mingw64_dll」或取決於二進制類型「mingw32_dll」再次捆綁您在步驟1中下載的這些zip文件。這些zip文件包含「libgcc_s_seh-1.dll」,「libgfortran-3.dll」和「libquadmath-0.dll」

  4. 添加include和lib,因爲我已對您項目和建立與正確的目標取決於你的下載二進制即win64或X86

  5. 根據二進制類型從「mingw64_dll」或「mingw32_dll」複製libopenblas.dll從OpenBLAS二進制文件的bin文件夾和「libgcc_s_seh-1.dll」,「libgfortran-3.dll」,「libquadmath-0.dll」在exe文件駐留的地方建立調試或發佈目錄。

    1. 運行你的程序,你很好走。

    2. 如果你想逃避一次又一次地複製設置所需的系統環境變量包含路徑這些DLL

0

我對OpenBLAS並不熟悉,但您的配置看起來正確。 在Windows上,或者至少在MSVC中,除了DLL文件的運行時,還需要鏈接到.lib文件。相反,它看起來像OpenBLAS安裝一個神祕的.dll.a文件。聽起來像它應該是同樣的事情: https://github.com/xianyi/OpenBLAS/wiki/How-to-use-OpenBLAS-in-Microsoft-Visual-Studio 可能重命名它會做的伎倆,但你可能需要從源重建獲得文件。

+0

libopenblas.dll.a在我的OpelBLAS安裝文件夾中。儘管我正在使用Qt Creator運行我的項目,但我轉而使用Visual Studio來檢查它。 libopenblas.dll.a不被識別爲庫文件。如果我將它重命名爲libopenblas.lib,它不會被正確讀取。我遇到了一個崩潰。 –