4

在我完全迁移到 Linux 之前,只有一个 Windows 应用程序困扰着我。这是我正在使用 Wine 运行的股票图表应用程序(找不到任何适合 Linux 的原生应用程序)。

该应用程序有自己的语言,它允许用户从 COM 组件创建对象以实现外部功能。在 Windows 中,我使用 Mono 创建了一个程序,它公开了允许我与图表软件交互的某些功能。

例子:

myObj = CreateObject("myApp.application");
myObj.data = Price;
volatility = myObj.Volatility;

问题:如何将ComVisible在 Mono 运行时下的 Linux 环境中运行的“myApp”的组件暴露给在 Wine 中运行的图表软件?

4

2 回答 2

1

不幸的是,mono 和 wine 没有特别的集成,因此您不能直接在 Mono 中调用 Wine 托管的代码。

一种选择是在 Wine 中使用 Microsoft 的 .NET 2.0 框架。最多只能支持 2.0。这可能会也可能不会违反 .NET 许可证。

另一种选择是使用在 wine 中运行的winelib编写自定义代理,但在 unix 域套接字上侦听来自 mono 程序的命令。

另一种选择是编写让mono通过DCOM与wine对话所需的(相当复杂的)代码。这将是相当困难的,但对于任何想要让 COM 对象在单声道中工作的人都会受益。

于 2011-02-02T04:46:15.060 回答
0

您应该能够在 Wine 下安装 Windows 版本的 Mono 并在其中运行您的代码。

于 2011-02-25T09:11:21.343 回答