首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

为何VB写出来的程序,不需要链接,不需要运行时库,就能在不同的机器上运行

2013-07-01 
为什么VB写出来的程序,不需要链接,不需要运行时库,就能在不同的机器上运行我用VB2005/2010/2012产生一个Wi

为什么VB写出来的程序,不需要链接,不需要运行时库,就能在不同的机器上运行
我用VB2005/2010/2012产生一个Windows application工程,什么也不添加,编译debug版生成一个exe文件。

发现这个exe文件可以在没有安装VB的任何windows机器上运行。

问题: VC/Delphi/Java编译出来的东西,VC需要链接运行时库,Java需要安装jre等等,.net的程序需要安装.net framework才能运行。

为什么VB编出来的非.net程序,在干净的windows上都能运行呢? 难道VB编译出来的exe本身并非一个可执行二进制文件而只是VB的中间代码,windows自带VB的解释器来解释执行它?


[解决办法]
.net c#主要是基于.net框架运行,只要系统包含有.net框架,就能运行,但是,如果你的程序包含有一些特别的com部件,比如引用了某些ocx文件,那com部件就可能需要安装注册
[解决办法]
在VB6以上的VB都是基于.NET框架的.

能运行说明目标机器上都布署了相应的环境,而你程序里也没有调用到环境自身提供的功能以外的功能.

另,XP貌似SP2还是SP1里就自带了一个.NET框架
[解决办法]
2003就已经集成.net1.1了 vb6以上的版本创建工程的时候框架是必选的,还能选择非.net框架的工程?
[解决办法]

引用:
我用了一台干净的Windows 2008 R2测试的。什么软件都没有装。

VB建立本地窗口程序,不依赖.net,也没有调用.net.

Windows Server 2008 R2内置了.NET Framework 3.5,支持VS2005(.NET 2.0)~VS2008(.NET 3.5)开发的程序。另外如果你打开了自动更新,Windows Server 2008 R2还会接收.NET Framework 4.0/4.5,那么VS2010/VS2012编写的程序也可以支持。
[解决办法]
引用:
在VB6以上的VB都是基于.NET框架的.

能运行说明目标机器上都布署了相应的环境,而你程序里也没有调用到环境自身提供的功能以外的功能.

另,XP貌似SP2还是SP1里就自带了一个.NET框架

Windows XP SP1以上版本在安装盘内置了.NET 1.1的安装文件,但是不会被安装。(山寨盗版可能会预装)
Windows Server 2003集成了.NET 1.1,并且Windows Server 2003 R2附带了.NET Framework 2.0
Windows Server 2008/Vista则集成了.NET Framework 3.0。
Windows Server 2008 R2/Windows 7集成了.NET Framework 3.5.1
Windows Server 2012/Windows 8集成了.NET Framework 3.5.1/4.5
Windows Server 2012 R2/Windows Client 8.1集成了.NET Framework 3.5.1/4.5.1
[解决办法]
引用:
我用了一台干净的Windows 2008 R2测试的。什么软件都没有装。

VB建立本地窗口程序,不依赖.net,也没有调用.net.

你这句话是不对的,VB6以上的VB都成为VB.net,并不是说你不写代码就没有调用.net,而是从解析exe文件,到创建进程,到创建窗口这一系列的操作都是由.net框架的内部程序进行的。

解释你原来的问题。你可以打开控制面板的“程序和功能”(这个是Win7的控制面板的显示项,XP的好像不是这样叫的,反正意思差不多的那个就是了,下面同理),然后打开里面的“打开或者关闭Windows功能”,就可以看到红圈里面的就是FrameWork框架,即.net的运行库(虽然叫运行库似乎不贴切)为何VB写出来的程序,不需要链接,不需要运行时库,就能在不同的机器上运行

其实哪怕是VB6也有运行库,只是VB6在1998年颁布,现在一般用的系统都不会低于XP,XP是2001年发布的,在发布的时候就自带了VB6的运行库,所以让人以为VB6不需要运行库,其实不是的。你遇到的问题也是同理,就像掩耳盗铃,你不手工去安装运行库不代表就不会有,那是因为系统本来就有自带的~~

热点排行