如何在VC ++中使用.lib,.dll和.exp文件?

时间:2016-06-10 11:07:22

标签: c++ visual-c++ dll pardiso

我正在尝试使用 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知之甚少。所以请帮助我。

非常感谢你!

2 个答案:

答案 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案例中) )。