最近在做一個(gè)C#調(diào)用C實(shí)現(xiàn)的一套接口,采用DLLimport方式,由于C接口函數(shù)里面需要傳遞2個(gè)結(jié)構(gòu)體,并且這兩個(gè)結(jié)構(gòu)體是封裝好的并不知道內(nèi)部構(gòu)造,在C#里只能用IntPtr,這樣傳遞在沒有連上對(duì)方的服務(wù)器前是沒問題的。但連上他們的服務(wù)器時(shí),程序就崩潰了,報(bào)內(nèi)存錯(cuò)誤,0xc00000054
這個(gè)錯(cuò)誤
。具體情況是,在C#里面構(gòu)造了一個(gè)結(jié)構(gòu)體(有指定物理結(jié)構(gòu)),在這個(gè)結(jié)構(gòu)體內(nèi)部還有其他2個(gè)結(jié)構(gòu)體,并且這2個(gè)結(jié)構(gòu)體不知道內(nèi)部細(xì)節(jié),只是用Intptr
代替,在傳參數(shù)時(shí) 使用Marlsh 將結(jié)構(gòu)體轉(zhuǎn)為指針。請(qǐng)問有沒有遇到類似的情況,是怎么解決的?
2 回答

婷婷同學(xué)_
TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
我已經(jīng)解決了,把結(jié)構(gòu)體對(duì)象轉(zhuǎn)byte[] 傳過去就行了。不要知道結(jié)構(gòu)體內(nèi)部。
- 2 回答
- 0 關(guān)注
- 896 瀏覽
添加回答
舉報(bào)
0/150
提交
取消