以前搞c++,最近项目需要入手c#遇到以下问题,上位机c#设计通过pinvoke方式调用c++动态库。有类似如下接口read(intptrbuffer,intlen)。对应c++代码read(PVOID64buffer,intlen)。现在遇到如下问题:
问题1,在c++下,可以直接对读取到的buffer通过指针进行操作,但c#却要再通过marshal将数据从非托管内存复制到托管内存,才能进行后一步的处理,严重影响了系统性能。
问题2,c++为了兼容32位应用程序和64位驱动的需要,要求函数的buffer指针必须为64位,但c#的intptr的位数缺是由平台决定的,32位编译环境下是32bit,64位环境下是64bit,两者位数无法完全匹配。
以上是遇到的两个问题,一直不知道用什么方法解决,请大牛给小弟指点一下。
分 -->
|