2013-12-23 37 views
0

我有設定爲__stdcall(/ GZ)調用約定一個C++項目X和C#項目Y.嘗試讀取/寫入受保護的存儲器錯誤而pinvoking C++函數

我已經在定義的類myClass的BOTH這些項目。

class myClass 
{ 
    private:int mem1; 
}; 

在類的C#定義,我曾與

[StructLayout(LayoutKind.Sequential)] 

的C++函數前綴是

_declspec (dllexport) void getLen(myClass* str) 
{ 
    printf("%s",sizeof(int)); 
} 

在Y,I所定義的函數,如下所示

[DllImport("X.dll")] 
private static extern void getLen(ref myClass str); 

而且我cal如下所示:

getLen(ref str); 

其中str是myClass類型的對象。

爲什麼運行此解決方案時會出現此錯誤?

回答

2

您的問題在於printf()調用:"%s"需要一個指向以空字符結尾的字符串的指針,但您提供的是size_t

+0

好的,我覺得真的很愚蠢。有效。謝謝!我的禁忌沒有錯。 –

相關問題