C ++では、これらの以下のクラスがあります
class A
{
public:
int __thiscall check(char *x,char *y,char *z);
private:
B *temp;
};
class B
{
friend class A;
Public:
B();
B(string x,string y,string z);
~B();
private:
string x;
string y;
string z;
};
C ++での私のdllメソッドはこのようなものです
__declspec(dllexport) int __thiscall A::check(char *x,char *y,char *z)
{
temp=new B(x,y,z);
return 1;
}
B() コンストラクターのコードは以下のとおりです。
B::B(string x, string y,string z)
{
.......
}
以下は私のc#dllインポートです
[DllImport("sour.dll", CallingConvention = CallingConvention.ThisCall, ExactSpelling = true, EntryPoint = "check")]
public static extern void check(IntPtr val,string x,string y,string z);
C++ ビルドはエラーなしで成功しましたが、dll インポート メソッドを使用して C# からこのメソッドを呼び出すと、「temp」クラス ポインターにメモリを割り当てようとすると、以下のエラーが発生します。以下はエラーです。
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
誰でもこれについて助けてください。前もって感謝します。