2017-03-29 16 views
0

我在我的家鄉ATL COM項目的方法如下IDL定義:如何看待與在C#中使用REF爲sbyte方法COM引用

[id(1)] HRESULT Create([in] CHAR* a, [out] Details* b); 

我從添加了一個參考我的COM對象我C#項目,它已經產生的存根這個功能對我來說,我需要調用:

void Create(ref sbyte a, out SampleNativeLib.Details b) 

我本來期望圖書館讓我用一個字符串作爲這個功能ref sbyte a參數。

如何調用它生成的Create方法?有沒有其他辦法可以讓它接受參數ref sbyte a作爲字符串?

+0

[這](http://stackoverflow.com/q/2561927/1132334)可能讓你開始(在其他方向相同) – dlatikay

+0

@dlatikay我'試圖從託管到本地,而不是其他方式... – Alexandru

+0

我想說的是它會工作只是相同的另一種方式:重寫ATL函數,以便它會接受BSTR,它將映射到c#中的'string'。 [另一個相關的](http://stackoverflow.com/a/13474480/1132334) – dlatikay

回答

1

您需要添加string屬性。這確保了CHAR指針作爲字符串處理:

[id(1)] HRESULT Create([in, string] CHAR* a, [out] Details* b);