我使用 Visual Studio 11 Beta 开发了一个应用程序。该应用程序无法在未安装 VS 11 Beta 的计算机上运行...
我已经安装了 .NET Framework 4.5,但它没有帮助......
有没有人对我应该安装或添加文件有什么建议,以便让它在没有 VS11 的任何计算机上工作?
我使用 Visual Studio 11 Beta 开发了一个应用程序。该应用程序无法在未安装 VS 11 Beta 的计算机上运行...
我已经安装了 .NET Framework 4.5,但它没有帮助......
有没有人对我应该安装或添加文件有什么建议,以便让它在没有 VS11 的任何计算机上工作?
当您在使用 Visual Studio 创建新的 C++ 应用程序时创建新项目时,此项目默认将运行时库选项设置为/MD用于发布配置或/MDd用于调试。“使用此选项编译的应用程序静态链接到 MSVCRT.lib。此库提供了一层代码,允许链接器解析外部引用。实际工作代码包含在 MSVCR * .DLL 中,它必须在运行时可用以与 MSVCRT.lib 链接的应用程序。”
您需要做的是转到项目设置,配置属性 -> C/C++ -> 代码生成并将运行时库更改为多线程 (/MT)用于发布/多线程调试 (/MTd)用于调试。这将导致运行时库被静态链接,并且您的应用程序不会尝试在运行时加载该 DLL。
检查运行时依赖关系的好方法是使用Dependency Walker:
构建应用程序并将应用程序 (.exe) 拖放到其中,它会显示它的依赖关系,您现在可能会在其中看到MSVCR110.DLL。当您将运行时库的使用更改为 /MT 时,重新构建您的应用程序并检查此依赖项是否真的消失了 :)