首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#应用非托管dll

2012-10-21 
C#使用非托管dll最近遇到C#使用非CLR动态链接库的问题。有很多东西不太明白,特来请教高手帮忙。1、C#代码在CL

C#使用非托管dll
最近遇到C#使用非CLR动态链接库的问题。有很多东西不太明白,特来请教高手帮忙。
  1、C#代码在CLR环境中都是自动分配和释放内存的。 如果C/C++编写的dll中有动态分配内存的情况,CLR去调用的时候会怎么处理呢?c/c++ dll动态分配的内存会在真正的堆上吗?如果是,那dll的环境和CLR的环境岂不就是独立的。怎么可能呢?如果dll动态分配的内存被CLR管理,那么如果dll中动态分配了一个结构体对象,并返回这个结构体对象的引用,我们在外部如何使用这个引用并访问结构体的成员。
  2,如果dll需要传递一个结构体对象的引用,我们如何在C#代码中为c/c++的dll准备这个参数呢?

高手可以用代码举个例子吗?不胜感激。



[解决办法]
看下这个,很详细,关于结构体的也有!http://wenku.baidu.com/view/5126f84b2b160b4e767fcf85.html?st=1
[解决办法]
ref 修饰
[解决办法]
1. c/C++分配的内存一样在heap,只不过没有clr帮你管理内存了,因此你需要自己释放。
2. 参考msdn:
How to: Marshal Structures Using PInvoke
http://msdn.microsoft.com/en-us/library/ef4c3t39.aspx

热点排行