gpt4 book ai didi

c# - ANSI C 作为 C# 项目的核心?这可能吗?

转载 作者:太空狗 更新时间:2023-10-29 15:20:54 26 4
gpt4 key购买 nike

我正在编写一个非 GUI 应用程序,我希望它成为 OS X 和 Windows 之间的跨平台。我正在查看以下架构,但我不知道它是否适用于 Windows 端:

(特定于平台的入口点)-> ANSI C 主循环 => 执行数据处理/逻辑的 ANSI C 模型代码 =>(特定于平台的助手)

所以我计划用常规 ANSI C 编写核心内容,因为 A) 它应该与平台无关,B) 我对 C 非常满意,C) 它可以完成工作并且做得很好

(平台特定的入口点)可以写成完成工作所需的任何内容,这是少量代码,对我来说无关紧要。

(特定于平台的助手)是粘性的东西。这就像解析 XML、访问数据库、图形工具包之类的东西。在 C 中不容易的事情。现代语言/框架将免费提供的东西。在 OS X 上,这段代码将用与 Cocoa 接口(interface)的 Objective-C 编写。在 Windows 上,我认为我最好的选择是使用 C#

所以在 Windows 上我的架构(简化)看起来像

(C# 还是 C?)-> ANSI C -> C#

这可能吗?到目前为止的一些想法/建议..

1) 将我的 C 核心编译为 .dll——这很好,但似乎没有办法调用我的 C# 助手,除非我能以某种方式获得函数指针并将它们传递到我的核心,但这似乎不太可能

2) 编译一个 C .exe 和一个 C# .exe 并让它们通过共享内存或某种 IPC 进行通信。我并不完全反对这个,但它显然引入了很多复杂性,所以它看起来并不理想

3) 使用 C++ 而不是 C#,它为我提供了一些不错的数据管理内容和不错的帮助程序代码。我可以很容易地混合它。我所做的工作可能很容易移植到 Linux。但我真的不喜欢 C++,而且我不希望这变成一个 3rd-party-library-fest。这并不是什么大不了的事,但现在是 2010 年……任何用于基本数据管理的东西都应该内置。针对 Linux 确实不是优先事项。

请注意,正如我在 SO 上看到的其他类似问题中所建议的那样,没有“全部”替代方案是可行的; java、RealBasic、mono..这是一个性能极其密集的应用程序,为游戏/模拟目的进行软实时,我需要 C 和这里的 friend 来做正确的事(也许你不需要,但我需要)

最佳答案

简短回答:是的。您可以很容易地从 .NET 访问非托管代码,但您必须整理数据。

长答案:不要这样做。你知道 mono project ?它是 .NET 的 x 平台实现。他们有点落后于 Microsoft,但他们仍然提供适用于许多人的解决方案。如果可能的话,我强烈建议保留托管代码,如果你进出 C 代码,你就违背了 .NET 的目的。这也有助于将您的项目复杂性降低十倍。

如果您需要 C ANSI 进行低级访问,我建议您向您的 .NET 核心公开一个小型经过良好测试的 C ANSI api 以执行任何低级操作级的东西。

C# 核心 <==> 小型 C ANSI 帮助程序库

关于c# - ANSI C 作为 C# 项目的核心?这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3054659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com