2016-06-10 177 views
1

我正試圖用pardiso來求解線性方程組。我已經從網站下載了我可能需要的一切(三個文件:.lib,.dll和.exp文件)。如何在VC++中使用.lib,.dll和.exp文件?

我知道什麼是dll和lib,對.exp一無所知。此外,我搜索互聯網,並找出我需要一個頭文件。但pardiso不提供我.h文件。

更重要的是,pardiso提供了一些例子,其中我想使用http://www.pardiso-project.org/manual/pardiso_unsym.cpp

現在來了我的問題。如何在不帶頭文件的VC++ 2015中使用.lib/.dll/.exp文件?我知道有兩種方法來加載.dll文件:動態和靜態,但不知道如何實現。

也許我的問題很容易,因爲我不太瞭解C/C++和dll。所以請請幫助我。

非常感謝!

+0

看看網站的示例代碼。對於一些非常奇怪的原因,您必須自己在自己的源文件中聲明函數原型。如果你能在5分鐘內知道圖書館是垃圾,並且不值得你花時間,那麼總是很好。 –

+0

所以你說pardiso是垃圾?那麼我可以使用哪一種求解器? – Alston

回答

2

我沒有自己下載這個軟件包,但我會說你的話,它裏面沒有頭文件(看起來就像你鏈接的例子)。

首先,不包括頭文件是極其不可思議的分發庫的方式。

縱觀Pardiso manual,看起來他們實際上是在那裏發佈功能接口。因此,如何使用它是通過基於來自該PDF的信息重新創建函數原型來自己創建頭文件。請參閱手冊,裏面列出了兩個函數調用的例子第7頁:

/* Check license of the solver and initialize the solver */ 
pardisoinit(pt, &mtype, &solver, iparm, dparm, &error); 

/* Solve matrix sytem */ 
pardiso(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, 
     perm, &nrhs, iparm, &msglvl, b, x, &error, dparm); 

在該PDF的之前和之後的部分,這些函數的原型Fortran語言給出,和它們的參數在正文中描述。從這些信息中,你將不得不重建原型。

這些原型的替代來源將是Pardiso提供的示例,該示例顯然包含原型。您需要驗證,複製粘貼它們是否可以通過許可方式進行。

爲什麼他們這樣做是超出我的,但似乎他們是。

要回答.exp文件問題:它基本上與.lib文件類似,它指定從.dll導出哪些符號。在正常情況下可以安全地忽略它。只有當您有兩個循環鏈接的二進制文件(DLL或exe)時,才需要使用它們。

+1

從** pardiso給出的例子**有一些函數原型,比如'extern「C」void pardisoinit(void *,int *,int *,int *,double *,int *); '。我應該將它們解壓縮到一個新的.h文件中嗎? – Alston

+0

@Alston確實如此。然後,您可以將這些文件複製粘貼到您創建的hader中。擴大了答案。 – Angew

+0

非常感謝。讓我現在就做。 :)。 – Alston

0

只需將.lib鏈接到VS項目並將.dll複製到.exe位置(如果可以使用Visual Studio進行調試,則將項目位置複製),並且您可以設置項目WITHOUT .h文件(僅限於某些Pardiso案件)。

相關問題