0
我正在使用C++的線性代數的armadillo包,它需要一對lapack和blas .dll才能正常工作。我不太確定我明白什麼是靜態鏈接。是否有可能以某種方式將這些.dll的「內部」放在.exe中,因此我不需要將它們複製到構建目錄中?如果是這樣,我該如何在cmake/qt創建器中設置它?靜態鏈接.dll和cmake/qt創建者?
我正在使用C++的線性代數的armadillo包,它需要一對lapack和blas .dll才能正常工作。我不太確定我明白什麼是靜態鏈接。是否有可能以某種方式將這些.dll的「內部」放在.exe中,因此我不需要將它們複製到構建目錄中?如果是這樣,我該如何在cmake/qt創建器中設置它?靜態鏈接.dll和cmake/qt創建者?
不,您無法靜態鏈接DLL。您必須將這些庫構建爲靜態庫並將其鏈接起來。如何做到這一點取決於圖書館。如果他們使用自動工具,您需要通過
--enable-static --disable-shared
到configure
。對於其他任何你需要查閱文檔。
對不起,如果這是一個愚蠢的問題/評論,但我已經有了.dll的。你是說我需要下載lapack/blas的源代碼並手工編譯它們嗎? –
@帕特里克我很害怕。除非你找到正確的編譯器/二進制文件下載。你爲什麼認爲你需要靜態庫?將DLL與可執行文件一起移動沒有任何問題。它實際上比靜態鏈接更喜歡。 – rubenvb
好的,謝謝你的幫助。我沒有對靜態庫或其他任何東西進行死鎖,它似乎比不必擔心.dll是否位於正確的文件夾中更容易一些。出於好奇,爲什麼比靜態鏈接更受歡迎? –