2012-03-16 68 views
2

我想通過使用dllexport導出函數。但我遇到的錯誤,而編譯器「錯誤C4439:‘WrappedC’:在簽名託管類型函數定義必須具有__clrcall調用約定」。使用dllexport時出錯?

我的頭文件(.h)中的代碼是:

extern "C" 
{ 

__declspec(dllexport) int __stdcall ABC(int i); 
__declspec(dllexport) char* __stdcall C(int i); 
__declspec(dllexport) array<char>^ __stdcall WrappedC(int i) ; 

} 

我曾試圖改變_stdcall到__clrcall但它使另一個錯誤:

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

我已經搜索互聯網,但我對尚未解決。

感謝,

牛逼& T組

回答

1

編譯器已經差不多跟你的問題是什麼。

__declspec(dllexport)的陣列^ __stdcall WrappedC(int i)以。由於該函數使用clr,因此不能使用__declspec(dllexport)。

陣列^是相當多了抱怨,因爲它不是本機代碼的一部分。

+0

謝謝你,但如何解決這個問題。 – TTGroup 2012-03-16 03:01:32

+1

哎呀!我知道我忘了一些東西。您可以將該函數聲明爲public,但您不能在非託管程序中使用它。 – Aleks 2012-03-16 03:04:29

+1

@Aleks其實,你可以,它只是涉及非常hacky的東西,它是一個封裝DLL更容易。 – Avery3R 2012-03-16 03:06:05