繁体   English   中英

NET中对CTS感到困惑

[英]Confused on CTS in .net

CTS会进行所有必需的数据类型转换,以使.net能够执行代码。 那么,当我们尝试实现不被它映射的指针,而是必须显式转换代码时,又会怎样呢?

我假设您的意思是通用类型系统。 CLR具有一个非常强大的互操作引擎,称为P / Invoke编组器。 将'C'字符串转换为System.String没问题,它具有[DllImport]和[MarshalAs]属性是自动的。 并非所有可能的'C'函数签名或结构声明都是兼容的,您有时可能需要自己将Marshal类编组为IntPtr。 最好的办法是提供此类麻烦功能的示例。

请注意,如果使用String ^,则可能是用C ++ / CLI编写代码。 然后,您将使用C ++ Interop与遗留的非托管代码进行互操作。 [DllImport]当然仍然可以使用,但是在C ++ / CLI中并不常用。 C ++ Interop非常强大,远比P / Invoke编组器强大。 但是随着功能的增加,价格也就高了,您必须自己解决一下char *和Unicode字符串之间的严重不兼容性。 使用marshal_as <>模板类并不是特别困难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM