在MSVC 2010项目中添加.dll文件的正确方法是什么

时间:2013-05-03 09:02:04

标签: c dll visual-studio-2010

我需要在MSVC 2010中的win32控制台应用程序项目中使用库 libMPSSE.dll 。编写代码后,我将dll复制到我的.cpp文件所在的文件夹中。我能够成功编译,但问题是我有链接错误:

  

libMPSSE.dll:致命错误LNK1107:文件无效或损坏:无法执行   读于0x308

这是dll本身的问题还是dll路径有问题?我们如何将dll添加到项目中?

他们没有提供任何.lib文件。完整代码为here

2 个答案:

答案 0 :(得分:2)

这些是链接到DLL的常用步骤:

  1. 将DLL的头文件包含在需要使用DLL中的函数的任何源文件中。您通常需要确保构建环境的include路径包含头文件的位置。在IDE中,您可以使用其他包含目录配置设置来执行此操作。
  2. 将DLL的.lib文件传递给链接器。在IDE中,您可以通过将.lib文件添加到 Additional Dependencies 设置来完成此操作。您通常需要将.lib文件的路径添加到其他库目录设置。
  3. 完成后,您的程序应该编译和链接。要使其运行,您需要确保可以在运行时找到DLL本身。实现这一目标的最简单方法是将其放在与可执行文件相同的目录中。
  4. 我的猜测,看看你的错误信息,是在第2步中你将.dll传递给链接器而不是传递.lib文件。

答案 1 :(得分:0)

如前所述,您无法直接使用C链接器链接到.dll文件。 有win32 API可以加载.dll文件并返回指向函数的指针。 通常,.dll文件附带.lib文件包含为您带来此负担的代码,并提供API .dll文件公开。您只需要链接到此.lib文件并将.dll文件放在创建的.exe文件附近。

特别是关于libMPSSE,它在release notes中说你可以将提供的.a文件重命名为.lib文件,以便在Visual Studio中链接到它(项目属性 - >配置属性 - >链接器 - > ;输入)。我尝试了它,它按预期工作。