使用DLL时,.lib文件包含在应用程序中

时间:2016-05-07 10:35:07

标签: c++ dll abstract-factory .lib

我有一个使用DLL的c ++应用程序。现在,我想在我的应用程序中从该DLL访问一个方法。但是,编译器给我“未解析的外部符号”错误,因为它无法找到该方法,即使我的DLL中的函数正确导出。当我在我的应用程序的附加依赖项中包含相应DLL的.lib文件路径时,错误得到解决,应用程序正常工作。

但是,有些人告诉我,当我使用DLL时,我不应该包含.lib文件。这就像静态链接DLL一样。

1)在应用程序中使用DLL时是否包含.lib文件,是不是很好?

为了避免这个.lib文件包含并避免为每个可导出方法调用GetProcAddess,他们建议我编写一些包装类并创建一个虚方法来从DLL中的类访问该方法。我不明白这种方法。

2)任何人都可以解释为什么我需要包装类以及这个抽象类如何为我提供我需要的功能?

提前致谢。

2 个答案:

答案 0 :(得分:1)

  

1)在应用程序中使用DLL时是否包含.lib文件,是不是很好?

根据msdn,您需要在使用dll时链接到.lib文件。当你有选择时,会考虑好的或坏的做法。你不在这里。

  

他们建议我写一些包装类并创建一个虚拟的   从DLL中的类访问方法的方法。

如果你创建了一个包装类,那么你必须将该包装类与dll链接起来,这将使你再次进入同一个地方。

答案 1 :(得分:0)

我在Windows上使用的所有共享库都使用了在使用dll时包含.lib文件。

重要的是要理解,在Windows平台上,并非所有扩展名为.lib的库都是静态的。 Here是一个讨论,解释了如何理解.lib库是静态库还是导入库。