我在上面搜索并意识到可能有几个原因,所以我将描述我的情景。
当我的应用程序尝试加载在另一个版本的Visual Studio(2010)中构建的.dll文件时会发生这种情况,如果我在Visual Studio 2008上构建相同的项目,则DLL文件加载得很好......
我不知道它是否重要,但Visual Studio 2010 DLL文件版本是基于Windows 7 x32构建的,而Windows Vista 64位则是Visual Studio 2008的另一面。
答案 0 :(得分:12)
如果动态链接到MSVC运行时,则需要在将运行应用程序的每台计算机上安装该运行时。
请注意,在这种情况下,您似乎链接到运行时的调试版本,分发与运行时的调试版本链接的应用程序是不正常的。
答案 1 :(得分:7)
如果您不想分发运行时,则可以将Visual Studio中的运行时库选项(属性 - > C / C ++ - >代码生成 - >运行时库)从/ MD切换到/ MT或从/ MDd到/ MTd。
正如其他人所说,如果您要分发此应用程序,则应该动态或静态地链接到Runtime库的Release版本,而不是Debug版本。
答案 2 :(得分:2)
只是一个小小的相关建议:在RELEASE版本中构建和运行时,不要添加任何* 248d.lib文件。
我正在关注不同博客的建议,我不小心添加了* 248d.lib以及 248.lib文件。基本上在链接器→输入→添加依赖关系,确保您没有* 248d.lib文件(此处248是版本2.4.8)
我花了好几个小时想知道为什么事情在发布模式下没有工作,直到我发现有两个.lib文件副本,一个* 248和其他* 248d。如果在发布模式中包含任何d文件,则会出现DLL问题。