簡體   English   中英

C ++結構指針轉換為數組互操作C#

[英]c++ structure pointer cast as array interop c#

前言

我有一個具有COM組件的舊式c ++應用程序。 其中一種方法

HRESULT foo(int* returnInteger)

盡管最初的實現被設計為返回單個int,但是程序經過了改進,使得實現此功能的類現在返回一個整數列表,而不是一個整數列表。

returnInteger = memalloc((number of integers)*size of integer)

並且調用方還通過以下方式讀取返回指針

number of integers returned = sizeof(returnInteger)/size of integer

我知道這種設計不是純粹的COM,也不是理想的設計,並且在設計時並沒有考慮到互操作性。 但是,我必須根據自己所擁有的去做。

當前問題

設計使用該組件的ac#應用程序。 我知道我將必須逐步淘汰它,但就目前而言,我必須繼續

c#將方法顯示為

foo(ref int returnInteger)

c#應用程序將僅讀取一個int(即使c ++客戶端通過整數數組發送)。 我如何才能使c#應用程序的行為與c ++客戶端相同,並讀取整數數組?

任何幫助對此表示感謝

找到了一種解決方法:使用托管C ++作為中間層。

盡管這不是最理想的解決方案,但由於我無法修改遺留代碼,因此這是最適合我的方法。

非常感謝所有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM