c#调用c++动态库问题

[复制链接]
查看11 | 回复2 | 2021-1-27 05:28:08 | 显示全部楼层 |阅读模式
以前搞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,两者位数无法完全匹配。
以上是遇到的两个问题,一直不知道用什么方法解决,请大牛给小弟指点一下。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:28:08 | 显示全部楼层
软件本身也有32位和64位版本之分
回复

使用道具 举报

千问 | 2021-1-27 05:28:08 | 显示全部楼层
1.就那么干
2.可以单封个64位进程序的EXE用来专干动态库的事,然后你主进程通过tcp/ip或http监听等等与那个EXE通讯
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行