C++ - 可执行文件的传输
Posted
技术标签:
【中文标题】C++ - 可执行文件的传输【英文标题】:C++ - transportation of executable files 【发布时间】:2016-04-27 18:37:32 【问题描述】:我已经用 C++ 构建了这个非常简单的基于多线程 winsock tcp 的多用户聊天。
我个人运行的是 32 位 windows 7 版本,聊天工作正常,现在我想在局域网中的不同计算机上测试它,仅举个例子,我想在另一个中运行我的 client.exe 文件计算机,运行 64 位的 Windows 7。
所以在此之前我有几个问题:
-
首先假设两个计算都运行 x86 架构传输这些 .exe 文件并在不同的计算机上运行它们应该没有问题吧?
现在我的第二个问题是缺少 dll,当尝试在另一台计算机上执行我的 client.exe 文件时,弹出了缺少“MSVCR120.dll”的 dll 错误消息。这实际上是有道理的,因为计算机可能是架构兼容的,但可能有不同的 dll。所以我的问题是,如果在我的 C++ Client.exe 文件源代码中,我将加载 MSVCR120.dll 并将其包含到我的 Client.exe 文件的文件夹中,这会解决我的问题吗?
【问题讨论】:
弹出了缺少的“MSVCR120.dll”dll 错误消息。您需要在这些计算机上安装 Visual Studio 2013 可再发行组件。跨度> 这与我想做的完全相反,我希望我实现我的程序的计算机不必安装 Visual Studio 2013,我想为他们加载那个 dll..@drescherjm 您没有安装 Visual Studio 2013。只是运行时。答案指出了你需要安装的文件。 【参考方案1】:你有两个选择:
-
为您的 exe 创建包含 VC++ 的安装包
可再分配。
使用在as a static library 中编译的 VC++ 运行时编译您的 exe。
第二种情况不需要安装包,只需将exe复制到目标机器上并从那里运行即可。
【讨论】:
谢谢,我该如何克服不同的处理器架构? @c-微笑 为每个架构编译不同的版本。虽然 32 位 x86 可以在 x64 上正常工作。 不谈论 x86 和 x64,谈论 risc 和 mips 与 x86 @drescherjm @DrPrItay 您将为每个平台提供不同的可执行文件。没有其他合理的选择。【参考方案2】:如果您使用 Visual Studio 构建程序,则需要安装 Microsoft Redistribuables:https://support.microsoft.com/en-us/kb/2977003
问候
【讨论】:
能否请您更具体地回答我的问题?该程序在我的计算机上运行良好,我想在其他计算机上运行它而无需在他们的计算机上下载特殊工具,只需将我的代码中的 dll 加载到他们的计算机@Eric T. 只需下载 Visual Studio 2013 的可再发行组件并将其安装在需要它的机器上。 microsoft.com/en-us/download/details.aspx?id=40784 既然你说程序是 32 位的,你需要 6.2 MB 的 vcredist_x86.exe 文件。 你的程序依赖 DLL 来运行,例如并非所有功能都在您的程序中。在开发 PC 上安装 Visual Studio 时,安装程序会安装所有需要的 DLL 以运行 Visual Studio 生成的程序。如果您想在另一台 PC 上运行您的程序,您必须至少安装运行时 DLL。大多数程序安装包括它们在自己的安装程序中依赖的 DLL。以上是关于C++ - 可执行文件的传输的主要内容,如果未能解决你的问题,请参考以下文章
C++ 可执行文件是不是包括 .obj、.lib 和 .dll?