[已解决问题] 关于跨平台的非托管
提问时间: 2008-01-30 19:08
悬赏分:100 浏览:328 次

我现在想使用一个其他操作系统(手机)的一个dll的功能,需要dllimport他的函数。

我不太明白的是,对于dll的类该怎么处理,这是一段在其他平台上运行的代码的例子(我想改写成c#的):

RSocket iSendingSocket;
 
CActiveScheduler::Add(this);


1:对于RSocket的声明,这是那个平台提供的一个类,我这边怎么声明一个这样的玩意可以对应过去呢? 简单的,他使用int,我这边也用int应该没错,但是对于这种复杂的类该怎么映射呢。

2:对于这种调用 Add(this),怎么把c#的实例传递到另外平台里面?用指针么?

谢谢。


问题补充:像第一种情况,如果iSendingSocket还需要执行函数该怎么办?
比如iSendingSocket.Send(xx,xx);
这样复杂的类RSocket 该如何在c#平台里面声明对应过来?

最佳答案
C#和C++互操作目前好像是不太可能的, 也就是说,你在C#里,通常是只能调用C函数,而不能调用C++里的类成员函数,更别提传递this指针了. 解决办法有两个: 1, 研究RSocket的源代码,我估计里面最终还是调用了操作系统,或者其它C语言开发的Lib/API. 找到它调用的是哪些C函数以后,你就可以知道这些函数存在于哪些dll文件中.此时我建议你按照RSocket使用这些函数的方法,用C#开发一个与它功能相同的类,以方便使用. 2,使用C++/CLI,做一层薄薄的包装. 推荐使用第二种,因为开发效率比第一种高得不止是一点.
2008/2/1 1:33:41 回答者:deerchao


提问者对于答案的评价:谢谢
评论
8个月前   随心所欲 :
看来不是很简单
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接