2015-12-11 84 views
0

我對C編程有所瞭解(今年夏天瞭解到),並且在K-State的一個線性編程課程中。我的術語項目是建立一個線性規劃求解器(內點法,我正在做原始 - 雙重路徑跟隨算法)。我已經正確編碼了所有內容,但無法獲得有效的矩陣逆向計算。我的教授建議我使用已建立的C矩陣計算庫。這導致我下載了「Meschach12b」。如何使用Windows將Meschach庫鏈接到C程序

我擡起頭,學會了如何鏈接一個目錄以及如何鏈接一個庫。我使用的是CodeBlocks和Windows 10,僅供參考。我將CodeBlocks指向帶有頭文件的目錄,然後去鏈接庫,但看到我下載的文件夾中沒有「.lib」,「.so」或「.a」文件。我不知道我是否以某種方式錯過了它,或者如果沒有這些文件就可以完成。我正在網上24/7全天候在線搜索,以便將其實施到我的算法中,因爲沒有它,我的術語項目就沒用了!這是由於本週所以任何幫助將不勝感激!

更多信息:

- 當我#包含頭文件,我嘗試使用,它「作品」時,我建,直到我後來調用該函數。然後出現一個錯誤,說有大量的「未定義的引用」(如50+),但我只調用一個函數。我相信這是由於我的圖書館沒有正確鏈接。

- 我通過這個網站搜索,發現有一個人詢問有關Meschach,他聲稱他的圖書館「安裝正確」,並顯示他輸入「whereis libmeschach」或類似的東西的屏幕截圖。我不知道該怎麼做,但這讓我認爲這就是我錯過的!

- 我會發布任何我需要的東西,但我非常渴望指出正確的方向。我已經爲這個項目投入了大約50個小時,我不希望這些都是徒勞。 :-(

回答

1

假設你下載類似mesch12b.zip(從meschach),你需要先構建庫。前面提到的文件似乎有一個MicroSoft的目錄,包含make-file,儘管我沒有試圖在Windows系統上構建它(警告:它可能不是微不足道的)。

如果您從其他地方下載了您的mescharc副本,請使用鏈接編輯您的原始帖子,然後看看我是否可以幫助您。

請注意,我不使用CodeBlocks,所以有什麼建議,我可以給你一些通用的。 (現在如果你想下載社區版本visual studio NtEmacs和mingw-w64,我可以給出更詳細的建議:))。

+0

如果我使用不同的編譯器,我可以將我的代碼複製到並運行它很好嗎?我只是碰巧聽到有關CodeBlocks的好消息,所以我開始了。我看到了一個「make file」和README文件,表示把這個和適當的header.h放在Meschach目錄下,我使用了「GCC」文件夾 - 這對於Windows 10來說是正確的我有一個Sony VAIO Ultrabook – user297883

+0

@ user297883:通常你可以很容易地切換編譯器,但是每個編譯器都有自己的怪癖,所以在切換編譯時你可能會遇到一些編譯錯誤,我建議使用makefile和來自M的header.h文件icroSoft文件夾(看你如何運行Windows平臺)。現在,棘手的部分 - mesch12b提供的makefiles用於GNU Make實用程序;你可能沒有安裝Cygwin,msys或gnuwin32或類似軟件。 CodeBlocks可能有能力導入一個make文件並從中建立一個項目。 – thurizas

+0

@ user297883:再想一想,最好的辦法可能是在VM中安裝一個Linux版本,您將可以訪問所有常規開發工具(gcc/make/g ++等)。如果你的項目代碼不依賴於Windows的東西(特別是GUI的東西),你應該能夠將代碼轉移到Linux VM上,並且能夠在不費力的情況下重新編譯。好消息是CodeBlocks可以在Linux和Windows上運行。另外,您下載的CodeBlocks版本可能包含gcc,而gcc是Linux上的標準編譯器。 – thurizas

0

您需要將庫安裝到您的開發系統中,只需指向將CodeBlocks安裝到軟件包目錄是不夠的,它只是告訴編譯器在哪裏找到頭文件,您需要庫模塊被編譯和鏈接爲一個庫,靜態的或動態的。

如果你不能使用某種分發或包維護實用程序來做到這一點,你將需要重新編譯庫並自行安裝它。在自述文件中的網站上。

在Debian Linux系統上,您可以使用sudo apt-get install libmeschach-dev

在與MacPorts的系統是Mac,你可以使用sudo port install meschach

+0

我使用的是Windows 10(Sony VAIO Ultrabook i7處理器)。你知道我需要什麼樣的「sudo」代碼嗎? – user297883

+0

@ user297883:我不再使用Windows。我不知道如何在Windows上安裝這個軟件包,希望熟悉這個平臺的人知道並告訴你。編譯庫可能是一個簡單的解決方案,但它也可能超出了你的技能水平。軟件包管理人員的重點在於從臨時用戶中移除這種複雜性。 'sudo'只是一個用超級用戶權限臨時執行另一個權限的命令,這個概念對於Windows用戶來說可能並不熟悉。 – chqrlie

+0

@ user297883:很簡單,你可以將'sudo'作爲Windows上'RunAs'的Linux \ Unix等價物(比如當你右鍵點擊一個文件,並且菜單項「以管理員身份運行」)。同樣的事情,但關閉 – thurizas

相關問題