【问题标题】:Reverse PInvoke and create a full unmanaged C# program反向 PInvoke 并创建一个完整的非托管 C# 程序
【发布时间】:2010-05-11 16:11:51
【问题描述】:

我知道这是一个奇怪的问题,但想法很简单:我更喜欢 C# 语法而不是 C++: - 直接在属性内的设置器和获取器 -接口 -foreach 语句 - 可以声明一个隐式转换运算符

其他小事...

我真正不知道的是,如果我不使用任何命名空间(甚至是系统),是否可以在 C# 中导入 c++ dll(尤其是标准库)

这个想法只是使用您通常在 C++ 中使用的所有内容编写程序(CLR 中没有),例如 printf

感谢您的任何回答

【问题讨论】:

标签: c# c++ pinvoke unmanaged


【解决方案1】:

不,不能简单地将现有的 C 或 C++ 文件导入 C# 项目。它们是非常不同的语言,不能在源代码级别混合使用。

混合 C# 和 C++/C 应用程序的方法是在 PInvoke 或 COM 互操作级别。这通过复制 C# 中的签名并允许 C# 编译器确定本机类型的二进制布局以在语言之间编组来工作。

【讨论】:

    【解决方案2】:

    现在有一些接近这个的东西

    .NET Native 将 C# 编译为与 C++ 类似的本机机器代码。您将继续受益于 .NET Framework 的生产力和熟悉度以及本机代码的出色性能。

    它仅适用于 Windows 应用商店应用(未来可能会出现桌面应用):

    桌面应用是我们战略中非常重要的一部分。最初,我们专注于使用 .NET Native 的 Windows 应用商店应用程序。从长远来看,我们将继续改进所有 .NET 应用程序的本机编译。

    还有

    应用程序将作为完全独立的本机编译代码部署在最终用户设备上(当 .NET Native 投入生产时),并且不会依赖目标设备/机器上的 .NET Framework

    【讨论】:

    • 考虑到最近的更新,我更新了您的答案。听起来不错!
    【解决方案3】:

    没有;这是不可能的。特别是,C# 不支持 C++ 模板。

    【讨论】:

    • 嗯,c# 有泛型,但它们不一样......所以没有办法使用 c# 语法来创建类似游戏的东西(是的,我知道 XNA,但我想完全写一些东西与 CLR 分离,使用 directx 或 opengl)
    猜你喜欢
    • 2013-01-05
    • 2013-01-26
    • 1970-01-01
    • 2021-04-01
    • 2011-02-07
    • 2012-11-19
    • 1970-01-01
    • 2018-05-15
    • 2011-04-21
    相关资源
    最近更新 更多