我需要在 MSVC 2010 的 win32 控制台应用程序项目中使用库libMPSSE.dll。编写代码后,我只是将 dll 复制到我的 .cpp 文件所在的文件夹中。我能够成功编译,但问题是我有链接错误:
libMPSSE.dll:致命错误 LNK1107:文件无效或损坏:无法在 0x308 处读取
真的是dll本身有问题还是dll路径有问题。我们如何将dll添加到项目中?
他们没有提供任何 .lib 文件。完整的代码在这里
我需要在 MSVC 2010 的 win32 控制台应用程序项目中使用库libMPSSE.dll。编写代码后,我只是将 dll 复制到我的 .cpp 文件所在的文件夹中。我能够成功编译,但问题是我有链接错误:
libMPSSE.dll:致命错误 LNK1107:文件无效或损坏:无法在 0x308 处读取
真的是dll本身有问题还是dll路径有问题。我们如何将dll添加到项目中?
他们没有提供任何 .lib 文件。完整的代码在这里
这些是链接到 DLL 的常用步骤:
我的猜测是,查看您的错误消息,在第 2 步中您将 .dll 传递给链接器,而不是传递 .lib 文件。
如前所述,您不能直接使用 C 链接器链接到 .dll 文件。有可以加载 .dll 文件并向您返回函数指针的 win32 API。通常,.dll 文件与 .lib 文件一起包含为您完成此负担的代码,并提供 API .dll 文件公开。您只需要链接到这个 .lib 文件并将 .dll 文件放在创建的 .exe 文件附近。
特别是关于 libMPSSE,在其发行说明中说,您可以将提供的 .a 文件重命名为 .lib 文件以在 Visual Studio 中链接到它(项目属性->配置属性->链接器->输入)。我试过了,它按预期工作。