以前搞c++,最近專案需要入手c#遇到以下問題,上位機c#設計通過pinvoke方式呼叫c++動態庫。有類似如下介面read(intptr buffer,int len)。對應c++代碼read(PVOID64 buffer,int len)。現在遇到如下問題:
問題1,在c++下,可以直接對讀取到的buffer通過指標進行操作,但c#卻要再通過marshal將資料從非托管記憶體復制到托管記憶體,才能進行后一步的處理,嚴重影響了系統性能。
問題2,c++為了兼容32位應用程式和64位驅動的需要,要求函式的buffer指標必須為64位,但c#的intptr的位數缺是由平臺決定的,32位編譯環境下是32bit,64位環境下是64bit,兩者位數無法完全匹配。
以上是遇到的兩個問題,一直不知道用什么方法解決,請大牛給小弟指點一下。
uj5u.com熱心網友回復:
軟體本身 也有32位和64位 版本之分uj5u.com熱心網友回復:
1.就那么干2.可以單封個64位行程式的EXE用來專干動態庫的事,然后你主行程通過tcp/ip或http監聽等等與那個EXE通訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/12960.html
標籤:C#
上一篇:c#參考ocx控制元件
下一篇:微信自動添加好友怎么實作的?
