首页 / C# / 如何在C#中使用C类实例
如何在C#中使用C类实例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在C#中使用C类实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1116字,纯文字阅读大概需要2分钟。
内容图文
![如何在C#中使用C类实例](/upload/InfoBanner/zyjiaocheng/730/d3852ef946c74c96aecbf7ba367f8224.jpg)
我有一个DLL,其中包含一个继承自另一个定义如下的抽象C类的类:
class PersonInterface
{
public:
virtual int __stdcall GetName() = 0;
};
DLL导出一个可以在C#中使用的函数,如下所示(以下方法是静态类PersonManager的一部分):
[DllImport( "person.dll", CallingConvention = CallingConvention.Cdecl )]
public static extern bool GetPerson( out PersonInterface person );
其中PersonInterface在C#类中定义如下:
[StructLayout( LayoutKind.Sequential )]
public class PersonInterface
{
}
我可以像这样成功检索C类实例:
PersonInterface person;
bool retrieved = PersonManager.GetPerson( out person );
但是,在调用GetName方法之前,检索到的对象没有任何用处.
为了能够在检索到的人物对象上调用GetName方法,还需要做些什么?
string name = person.GetName();
解决方法:
>使用/ clr编译器选项编译C DLL.
>使用公共引用类语法编写托管类,并在此类中指向本机类.公开此托管类中的所有方法,并将所有调用转发到本机类.
>在c#项目中将此DLL作为程序集导入,并像使用任何其他.NET类一样使用此类.
您需要使用/ clr标志编译少量源文件,而不是全部.让所有本机源文件都编译为本机.您的DLL将链接到VC运行时DLL以及.NET运行时DLL.
托管类,/ clr,互操作性/编组有很多,但至少开始.
您可以从here中选择自己喜欢的文章
内容总结
以上是互联网集市为您收集整理的如何在C#中使用C类实例全部内容,希望文章能够帮你解决如何在C#中使用C类实例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。