gpt4 book ai didi

c# - C# 对 native 互操作的限制

转载 作者:行者123 更新时间:2023-12-02 04:38:34 25 4
gpt4 key购买 nike

我知道 C# 允许使用 PInvoke ( An Overview of Managed/Unmanaged Code Interoperability ) 与 native 代码进行互操作

我们计划开发新代码,并正在考虑 2 个选项:

  1. native 解决方案 + 调用 native 代码的互操作代码的托管 (C#) 包装器。
  2. 完全托管的解决方案

我想知道此互操作是否有任何记录在案的限制? (例如 - 某些类型不能在托管/ native 等之间来回编码)

这些限制会影响我们使用(或不使用)选项 #1 的决定。

最佳答案

P.O.D. (普通旧数据)结构通常很容易编码。

但是,如果您想编码包含向量之类的复杂 C++ 类,那么您就会遇到麻烦。

如果您可以编写 C/C++ 代码将复杂类转换为更简单的类型以通过 p/invoke 调用,那没问题 - 但除此之外,请远离复杂的 C++ 类。

不过,还有另一种可能。

您可以使用所谓的“It just works”技术通过CLI C++ 类包装C++ 代码。您可以在 C++ 中混合使用非托管代码和 CLI 代码 - 即使在同一个文件中 - 这确实很有帮助。

详情请看这里:

http://msdn.microsoft.com/en-us/library/ms173185.aspx

http://www.windowsdevcenter.com/pub/a/dotnet/2003/03/03/mcppp2.html (这个比较旧)

http://www.codeproject.com/Articles/651516/Exposing-native-to-managed-Cplusplus-CLI-vs-P-Invo

关于c# - C# 对 native 互操作的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21381907/

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