将 COM 对象公开给 Wine/Linux 中运行的应用程序

发布于 2024-10-15 13:46:13 字数 475 浏览 10 评论 0原文

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

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

示例:

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

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

Only one Windows application is troubling me before I can fully move to Linux. It's a stock charting application (couldn't find any decent one native to Linux) that I'm running using Wine.

This application has its own language and it allows the user to create objects from COM components to implement external functions. In Windows, I created a program using Mono that exposes certain functions that allow me to interact with the charting software.

Example:

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

Question: How could I expose the ComVisible components of "myApp" which is running in the Linux environment under Mono runtime to the charting software running in Wine?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷雾森÷林ヴ 2024-10-22 13:46:13

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

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

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

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

Unfortunately, mono and wine have no particular integration, and so you can't directly invoke Wine-hosted code in Mono.

One option would be to use Microsoft's .NET 2.0 framework in Wine. Only up to 2.0 is supported well. This may or may not be a violation of the .NET license.

Another option would be to write a custom proxy using winelib that runs in wine, but listens on a unix domain socket for commands from your mono program.

Another option would be to write the (rather complex) code needed to get mono to talk to wine over DCOM. This would be rather difficult, but would benefit anyone down the line who wants to get COM objects working in mono.

删除会话 2024-10-22 13:46:13

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

You should be able to install the Windows version of Mono under Wine and run your code in that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文