在C ++中使用带有.h头的DLL

时间:2009-03-14 18:26:20

标签: c++ dll header function

我得到了一个小型库,包含.dll,.h标头和.def文件。我很确定这个库是用C语言编写的,但可能是C ++。

我是否可以在不使用通常谈到的LoadLibrary / GetProcAddress / FreeLibrary方法的情况下访问库中的函数。我没有.lib文件 - 通常有一个吗?

我在过去的两天里一直在寻找这个。看来,因为我已经给出了一个头文件来定义我希望从dll和.def文件中使用的函数,所以我不需要手动显式地'加载'每个函数(LoadLibrary / GetProAddress / FreeLibrary) - 在在我的情况下,我将使用.dll中的大约5或6个函数,但是大约有70个可用,这似乎是一个球疼,并导致不必要的代码混乱。

感谢您的任何建议。

3 个答案:

答案 0 :(得分:7)

为DLL创建导入库有多种方法 - Microsoft通过构建您自己的.DEF文件来记录创建方法:

答案 1 :(得分:3)

Visual C ++有“lib” - 在在线帮助中查找。

使用“lib / def”制作.lib文件。

答案 2 :(得分:2)

您需要一个lib文件 - 它包含链接器为您的DLL创建导入表所需的存根。

不确定这是否有效,但您可以尝试:

创建一个带有空存根和.DEF文件的.C文件。编译为具有完全相同名称的DLL以生成.lib。丢弃新的DLL,并与lib链接,如果现有的DLL与你的程序应该能够加载和绑定它的exe在同一个目录中。

我相信这会有效,因为原生DLL没有强烈命名。