繁体   English   中英

本机Windows C ++编程?

[英]Native windows c++ programming?

我对本机c ++以及其他人在Windows上进行编程有一个快速的问题-我最近在自己的计算机上用自己的计算机在Visual Studio中编写了一个小型c ++程序,可以为我做一些数学运算。 我成功编译了该文件,并将.exe从VS debug文件夹移至我的桌面。 无论.exe在哪里,它都可以在我的计算机上正常运行。 但是后来我把程序交给了我的朋友,当他试图运行它时,它说他缺少各种dll文件。 现在我感觉这是因为VS中包含一个c ++环境,该环境允许它在我的而不是他的计算机上运行。 但是我的问题是,程序最初使用哪种语言,为什么应该很重要? 将其编译为.exe来将代码转换为机器语言,以使其可以在任何计算机上运行,​​而不管它是否具有dev工具,这不是很重要吗?

编译调试版本将动态链接到Windows不附带的dll文件的调试版本。 技术上/法律上也不允许您重新分发dll文件的调试版本。 要么编译发行版本,要么将链接到的任何.dll文件都包含在exe文件中。 您可能还需要担心目标计算机是否安装了正确的Microsoft Visual Studio C ++可再发行程序包。

或者,您可以通过在项目属性的“代码生成”下设置“运行时库”->“多线程/ MT”来进行静态链接,从而绕过dll地狱,尽管出于各种原因(我不愿赘述),人们通常对此并不满意。

理论上讲 ,Exe文件可以在具有合适CPU等的任何计算机上运行。
(与您的操作码“语言”相同)。

实际上,存在两个主要问题:

a)程序文件包含的内容不止CPU命令,其内容和方式还取决于您的操作系统。 Exe(PE)文件通常在Windows中使用,尽管从理论上讲它是可能的,但是Linux不会运行它,因为没有人以了解Exe文件的方式对其进行编程(有其他软件,例如Wine, 可以在其上运行Exe。 Linux,但必须单独安装)

b)您并不是从头开始编写操作系统的所有内容,而是要依赖于可以使用许多预先存在的功能。 如您所知,这些必须存在才能运行程序。 问题是,Visual Studio假定存在库,这些库不是Windows本身的一部分。 将它们与每个Windows安装一起交付并不是问题,但是Microsoft选择将它们保留为单独下载(注释中提到的Redist。程序包)。 要在不依赖其他库文件的情况下尽可能地在Exe文件中填充内容,请为您的项目使用静态链接选项。

此问题与语言无关。 如果缺少依赖项/库,什么都没有,那肯定会大喊大叫。 它期望使用其他dll中的代码来知道如何做某事。

一个很好的例子是当您运行一个.exe时说“嘿!”! 我们注意到您缺少此驱动程序/文件/依赖项,然后将您带到其他一些单击链接来获取它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM