我正在尝试使用 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知之甚少。所以请帮助我。
非常感谢你!
答案 0 :(得分: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 :(得分:0)
只需将.lib链接到您的VS项目并将.dll复制到您的.exe位置(或项目位置,如果您可以使用Visual Studio进行调试)并且您可以设置项目WITHOUT .h文件(仅在某些Pardiso案例中) )。