我试图弄清楚如何在我的一个项目中包含我创建的DLL,但每个指南都告诉我使用.lib文件,而我没有。我使用Visual Studio 2019并用纯C编译。
我第一次使用Visual Studio的DLL模板在x64中创建我的DLL文件。这导致我的文件夹显示如下... x1c 0d1x
然后我再次使用Visual Studio,但这一次做了一个普通的控制台应用程序。然后我首先进入Properties -〉C/C++ -〉General -〉Additional Include Directories并将目录添加到MouseInput中,如上图所示。这允许我包含“MouseInout. h”头文件,工作正常。接下来,我进入Properties -〉General -〉Additional Library Directories并将路径复制到上面的Release目录。我进入Properties -〉Input -〉Additional Dependencies并尝试添加MouseInput.lib(就像大多数教程指导你做的那样),但是失败了,然后我试着只添加MouseInput.obj,但是也不起作用。
尝试构建我的控制台应用程序会导致一个LINK 2011错误,说:“预编译对象未链接;image may not run”when I tried adding MouseInput.obj however,when I add MouseInput.lib(which just doesn 't exist inside my project)I get a LINK 1181 error saying,“cannot open file 'MouseInput. lib'”.那么,这里到底是什么问题?我的lib文件在哪里?
编辑:我意识到我可以进入我的DLL的配置属性-〉通用-〉配置类型,将项目改为.lib文件而不是.dll文件.然而,从我的理解.lib是静态加载的而且我希望它是动态加载的。但是似乎没有一种方法可以在没有lib的情况下使用dll,所以我需要单独编译它们吗?如果我只是在执行程序的同一个目录中包含dll,我上面的代码可以正常工作吗?
1条答案
按热度按时间rdrgkggo1#
编译DLL时,编译器会创建DLL文件和LIB文件。LIB文件称为 * 导入库 *。它不包含任何代码,但包含DLL中函数的定义。
如果编译器没有生成LIB文件,那么你必须在DLL项目中启用 Import Library,正如@Axalo所提到的。
编译应用程序时,编译器需要导入库(LIB文件)。运行应用程序时,需要DLL文件。
有关示例和详细说明,请参阅this article。