1

我正在尝试用pardiso求解线性方程组。我已经从网站下载了我可能需要的所有内容(三个文件:.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 了解不多。所以请帮助我。

太感谢了!

4

2 回答 2

2

我自己没有下载该软件包,但我会相信您的话,其中没有头文件(从您链接到的示例中似乎如此)。

首先,不包括头文件是分发库的一种非常奇怪的方式。

翻阅Pardiso 手册,似乎他们实际上是在其中发布功能接口。因此,您将如何使用它是通过根据该 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)时,您才需要使用一个。

于 2016-06-10T11:26:55.353 回答
0

只需将 .lib 链接到您的 VS 项目并将 .dll 复制到您的 .exe 位置(或项目位置,如果您可以使用 Visual Studio 进行调试),您就可以在没有 .h 文件的情况下设置项目(仅在某些 Pardiso 情况下)。

于 2017-07-27T03:27:06.113 回答