C#类型转换,在线等待

xqybb 2003-04-04 03:40:16
我在C#客户端调用一个非托管的C++dll,有如下声明
[DllImport("TCFGLIB.DLL")]
public static extern void DrawYard(IntPtr hDC,IntPtr iTmp);
问题1:这里iTmp 在C++里要求的是一个自定义类型的指针。如:TMyClass *pClass,这里的函数声明除了这样声明还可以怎样声明。

我在C#远程类中调用非托管的C++dll,通过远程类函数(GetClass)调用返回一个自定义类型的指针(return pClass)
问题2:我在C#客户端如何实现,即如何将远程类返回的类型指针传入DrawYard函数中(我在远程类返回时将自定义指针转换成了long 即return (long)pClass,否则我不知道在C#客户端用何种类型接受该返回值,因为该类型为非托管dll中的一个类)

...全文
55 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqybb 2003-04-23
  • 打赏
  • 举报
回复
up
xqybb 2003-04-21
  • 打赏
  • 举报
回复
up
xqybb 2003-04-21
  • 打赏
  • 举报
回复
up
gweidian 2003-04-18
  • 打赏
  • 举报
回复
UP
xqybb 2003-04-18
  • 打赏
  • 举报
回复
这里 typeof(mystruct)在客户端如何识别,结构还可以再声明一遍,可类呢,我不可能在C#中将C++的类再声明一遍呀
Knight94 2003-04-17
  • 打赏
  • 举报
回复
我最近看到一个例子,调用返回一个struct结构指针的dll函数,大概思路如下:
用IntPtr作为Dll函数的返回值,

[StructLayout(LayoutKind.Sequential)]
public struct mystruct{
[MarshalAs(UnmanagedType.ByValArray, SizeConst=struct的大小)]
……//数据
}

[DllImport……]
public static extern IntPtr pFun(参数);

...
IntPtr ptr = pFun(参数);
mystruct result = (mystruct)Marshal.PtrToStructure(ptr, typeof(mystruct));
xqybb 2003-04-17
  • 打赏
  • 举报
回复
up
xqybb 2003-04-16
  • 打赏
  • 举报
回复
up
gloomyfire 2003-04-16
  • 打赏
  • 举报
回复
c++中的指针在C#中是 int 类型的。
你要定义一个和c++里边一样的函数。不难实现。(DLL中的函数)
然后才能引用的。

好运。。。
bethrezen 2003-04-14
  • 打赏
  • 举报
回复
gz
韩小明 2003-04-14
  • 打赏
  • 举报
回复
帮忙UP
xqybb 2003-04-14
  • 打赏
  • 举报
回复
up
zhulb 2003-04-08
  • 打赏
  • 举报
回复
up
xqybb 2003-04-07
  • 打赏
  • 举报
回复
我的Dll是用VC.net写的,但是是非托管方式,我正是想访问里面的数据。难道这样就没有办法了吗,这条路行不通吗?
Knight94 2003-04-07
  • 打赏
  • 举报
回复
你的Dll是.net写的吗?如果是的话,引用一下就行了。
否则,有些麻烦,即使你得到指针,而无法得到类型,也无妨访问到里面数据。
xqybb 2003-04-04
  • 打赏
  • 举报
回复
up

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧