2013-11-26 176 views
3

我想知道是否可以在C++函數之間傳遞我調用的C#對象?我已經可以從我的本地代碼中調用我的C#dll,但是現在我需要在C++函數之間傳遞一個對象,這也意味着我需要在頭文件中聲明它...在C++函數之間傳遞C#類

在我的頭文件我得到以下錯誤:

BOOL Exists(Api ^api); 

Error 60 error C3395: 'ApiBase' : __declspec(dllexport) cannot be applied to a function with the __clrcall calling convention 

有誰知道我應該如何處理這在我的頭?

+2

只需停止使用'__declspec(dllexport)'。 –

+0

爲什麼?該怎麼做呢? –

+0

'BOOL存在(Api^api);'是爲了成爲本地dll的api的一部分? –

回答

3

您使用__declspec(dllexport)導出本機C++類。但這聽起來像你的課是一個託管的.net ref類。如果您希望導出託管客戶端和非託管客戶端的功能,則需要聲明兩個類。一個是託管的ref類,另一個是本地類。

或者,也許問題是您試圖導出一個管理參數爲__declspec(dllexport)的函數。這又是不可能的。

+0

嗯好的。如果我改變這個需要在函數之間傳遞給Singleton的類,也許它更簡單,更簡潔?這樣我將擁有一個全球接入點。 –