编译后的vb6应用程序理论上在Mac上的WINE下工作吗?

编译后的vb6应用程序理论上在Mac上的WINE下工作吗?,vb6,emulation,wine,Vb6,Emulation,Wine,另一位正在工作的开发人员告诉我,由于某些特定于Visual Basic 6应用程序的原因,它无法工作 但我认为只要包含正确的DLL和运行时文件,它就会工作,VB6不是编译成机器代码吗 编辑:我只是说一般来说这是可能的。我将在几天后实际测试这一点,只要没有人给我一个理论上的理由,它将不起作用 编辑2:我认为开发人员指的是p代码,vb6可以选择编译成p代码,而不是在类似于.Net framework(或其前身)的虚拟机下运行的二进制代码 看起来你可以让大多数VB6程序正常工作。我在Ubuntu下的W

另一位正在工作的开发人员告诉我,由于某些特定于Visual Basic 6应用程序的原因,它无法工作

但我认为只要包含正确的DLL和运行时文件,它就会工作,VB6不是编译成机器代码吗

编辑:我只是说一般来说这是可能的。我将在几天后实际测试这一点,只要没有人给我一个理论上的理由,它将不起作用

编辑2:我认为开发人员指的是p代码,vb6可以选择编译成p代码,而不是在类似于.Net framework(或其前身)的虚拟机下运行的二进制代码


看起来你可以让大多数VB6程序正常工作。

我在Ubuntu下的Wine中测试了一个大型VB6应用程序。事件msi安装程序工作正常。在底层实现细节方面遇到了一些问题(例如,在NM_CUSTOMDRAW on CDRF_NOTIFYITEMDRAW阶段,hDC文本在默认情况下不像在Windows常用控件中那样透明)。所以,是的,即使是高度子类化的东西也能工作。我只需要把那些小毛病熨平

这是一个检查应用程序是否在wine下运行的函数

Property Get IsWine() As Boolean
    IsWine = (GetProcAddress(GetModuleHandle("kernel32"), "wine_get_unix_file_name") <> 0)
End Property
属性Get IsWine()为布尔值
IsWine=(GetProcAddress(GetModuleHandle(“kernel32”),“wine\u get\u unix\u file\u name”)0)
端属性

VB6可以编译为机器代码或P代码,这是项目设置下的一个选项。理论上我认为它可能会工作,但我个人不想自己支持它。vb6应用程序是否默认生成机器代码?它是否在虚拟机或其他设备下运行?我以为是EXE、DLL和windows系统调用中的机器代码。下面是解释如何更改设置的示例。我认为默认的是p代码。微软总是把p-code描述为一种解释语言,也许你可以把它看作一台虚拟机器,非常感谢。基于我对葡萄酒的理解,我认为没有理论上的理由让它不起作用。如果我们能让安装程序和基本程序正常工作,我可以为WINE下的版本编写自定义代码,只要大部分核心功能正常,就可以在需要的地方使用您的代码。非常好的链接,谢谢。只要我知道这是可以做到的,我会尝试一下……最终我可以访问源代码和部署环境,所以我只需要愿意花时间投资。