首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本机windows c++编程?

本机windows c++编程?
EN

Stack Overflow用户
提问于 2015-08-05 21:25:58
回答 3查看 1.2K关注 0票数 1

我有一个关于原生c++的快速问题,以及其他一些在windows上编程的问题--我最近在自己的电脑上用Visual编写了一个小的c++程序,为我做了一些数学计算。我成功地编译了它,并将.exe从VS调试文件夹移到我的桌面上。它在我的计算机上运行良好,无论.exe位于何处。但是后来我把这个程序给了我的朋友,当他试图运行它时,它说他丢失了各种各样的dll文件。现在我有一种感觉--这是因为VS中包含了一个c++环境,允许它在我的而不是他的环境上运行。但我的问题是,为什么程序最初是用什么语言编写的呢?是否需要将代码编译成.exe,将代码转换为机器语言,这样它就可以在任何计算机上运行,而不管是否有开发工具?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-05 21:42:20

编译调试版本将动态链接到不符合Windows标准的dll文件的调试版本。技术上或法律上也不允许重新分发dll文件的调试版本。要么编译一个发行版,要么包含与您的exe文件链接到的任何.dll文件。您可能还必须担心目标计算机是否安装了适当的Microsoft C++可再发行包。

或者,您可以通过在项目属性中的代码生成下设置运行时库->多线程/MT来静态链接,从而绕过dll地狱,尽管出于各种原因,我不想进入其中,但这通常是不能接受的。

票数 4
EN

Stack Overflow用户

发布于 2015-08-05 21:43:25

理论上,Exe文件可以在任何具有适当CPU等的计算机上运行。

(与您的操作码“语言”相同)

实际上,有两个主要问题:

( a)程序文件包含的不仅仅是CPU命令,什么以及如何依赖于例如,您的操作系统。Exe (PE)文件通常在Windows中使用,虽然理论上是可能的,但是Linux不会运行它,因为没有人以一种理解Exe文件的方式对它进行编程(还有一些附加的软件,比如葡萄酒,它可以在Linux上运行Exe,但必须单独安装)

( b)你并不是从头开始编写操作系统,而是依赖于你可以使用很多预先存在的功能。如您所知,这些必须在运行您的程序时在场。问题是,Visual假定存在有意不属于Windows的库。在每次安装Windows操作系统的时候都会有问题,但微软选择单独下载( Redist )。(评论中提到的包)。若要在不依赖其他库文件的情况下尽可能多地填充Exe文件,请为项目使用静态链接选项。

票数 2
EN

Stack Overflow用户

发布于 2015-08-05 21:30:09

这个问题与语言无关。如果您缺少依赖关系/库,当然它会大喊大叫。它希望使用来自另一个dll的代码来了解如何做一些事情。

一个很好的例子是,当你运行一个.exe,上面写着嘿!我们注意到您缺少了这个驱动程序/文件/依赖项,然后它会让您通过其他的单击来获得它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31843123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档