[英]Armadillo with wxWidgets: polyfit fails to link
我一直在使用 wxWidgets 制作一些 Armadillo 功能的可視化示例。 矩陣轉置和 FFT 都運行良好,但是當我嘗試進行簡單的 polyfit 調用時,linker 失敗並出現如下一系列錯誤:
> error LNK2019: unresolved external symbol sdot_ referenced in function "double __cdecl arma::blas::dot<double>(unsigned __int64,double const *,double const *)" (?? $dot@N@blas@arma@@YAN_KPEBN1@Z)
但是,如果我不使用 wxWidgets 來顯示結果,則完全相同的調用可以完美地鏈接和運行。 我正在使用 Windows 10 和 Visual Studio 2022。
這是導致鏈接錯誤的代碼。 它編譯並鏈接查找 polyfit 行是否被注釋掉。
vector <double> xcoords = { 7,8,9,10,11,12,13,14,15,16,17 };
vector <double> ycoords = { 32,35,29,34,30,24,32,24,23,28,21 };
arma::vec x = arma::vec(xcoords);
arma::vec y = arma::vec(ycoords);
arma::vec p = arma::polyfit(x, y, 2);
當我安裝 Armadillo 時,我運行 Cmake. 來構建庫,但是由於已經提供了 libopenblas.dll 和 .lib,所以它沒有創建 armadillo.lib 文件。 我也嘗試下載最新的 win64 OpenBLAS 庫,但出現了同樣的鏈接錯誤。
我嘗試用今天下載的替換 2016 年的 libopenblas.lib 和 dll。 沒變。 如果調用 polyfit function,它不會鏈接,但如果將其注釋掉,則可以正常編譯。
你會認為調用 Armadillo 函數的程序可以編譯並運行,只要你告訴編譯器包含的位置和 linker 庫的位置。 這通常有效,但對於 polyfit 則無效。
解決方案是復制示例 Visual Studio 解決方案文件 example1_win64.sln 並重命名。 然后,打開該解決方案並將示例代碼替換為您自己的代碼,程序將編譯並鏈接。
將該解決方案文件移動到您創建的目錄中可能是個好主意,Visual Studio 會在該目錄中保存其所有項目,C:\Users\your_name\source\repos
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.