RealBasic 是一款 Mac OS 和Linux windows 上的跨平台集成软件。 
可是发现 他生成的可执行文件居然没 3.3mb ,就 一个 MsgBox("") 而已。 
用exescope 打开 其生成的exe文件,导出中为一个叫 x86runhoudini.exe 的文件。 
从这里,完全可以看出, 它只是一个 虚拟机而已。 一个在windows下的虚拟机, 把代码附加到这个所谓的可执行文件里 。 然后解释执行而已。 
而vb6,是半虚拟机,可见 , realbasic 只是个欺骗者,

解决方案 »

  1.   

    我用过 RealPlayer , 没听说有 RealBasic!    
      

  2.   

    多很多种语言做以比较和使用, 还是比较好的。  不要老是用个什么vb 呀, c# java 的, 
    这个世界是很大的。  
      

  3.   

    的确不太爽。但也没必要排斥它吧。它的做法是恶心了点,不过也不失为一种跨平台的解决方法啊,Java也不是靠着虚拟机才实现跨平台吗?它只是把虚拟机整合到EXE中这一点不太爽。
      

  4.   

    mysticboy知其一不知其二了:
    第一,REALbasic的代码的确是编译执行的,不是解释执行的,所有代码都被编译为本机的x86代码.
    第二,REALbasic的程序比较大是因为静态链接了REALbasic的Framework,Windows上的Framework是用Win32API写的库.比如就一个MsgBox("")  来说,它并不是直接调用Win32API,而是调用框架包中的函数进行一些包装处理,最终桥接到Win32API.因此GUI程序最小也有3-4M,随后才随代码增加而增长
    第三,x86runhoudini.exe并不是一个虚拟机,它是一个占位文件,这个文件可以在RB安装目录下的resources文件夹里面找到.换句话说,它是一个空白的PE32结构,REALbasic没有真正的PE和ELF链接器(Linker),编译后的x86原生代码和资源等被填入到这个占位文件中的程序和数据段中实现链接.
    实际上我的公司去年承接了REALbasic PE和ELF链接器的开发,但在一些细节上有分歧,目前停滞,主要是REAL觉得这个占位文件用的也不错,不肯多花钱来重写连接器,更怕链接器重写后对现有的代码(主要是编译器代码)产生影响,会有一大堆相关的bug出来,软件质量各方面都会受到冲击.
      

  5.   

    "x86runhoudini.exe是个空白的PE32结构"对2005版之后的RB来说不正确,因为2005以后的版本中,主框架包已经被事先链接进去了.
      

  6.   

    原来如此, 谢谢kmzs 的解释。  但是我总觉得, 这给人不爽的感觉, 让人感觉不纯洁。 
    不纯粹。   
      

  7.   

    To 麦壳饼:
    是不太好,不光不是让人觉得不太纯粹,而且也是RB不能编译动态链接库/共享库的原因——共享库的格式比较复杂和零活,总不能也做个空白结构随后填充吧。连接器的问题总有一天还是要解决的。
      

  8.   

    下载了 REALbasic 2008 Release 5.1,试了下,感觉不错啊,界面控件也很多了,很成熟的样子。
    本来我还以为是刚开发出来、小打小闹的呢。