の間で "値" を渡すために、私はCでDLLプロジェクト++などを持っている:上記のように、どのようにC#とC++のdll
[DllImport("ReportContent.dll")]
extern static bool cppPage1()
public void Page1()
{
StringBuilder s1 = new StringBuilder("1#3", 10000);
StringBuilder s2 = new StringBuilder("", 10000);
cppPage1(s1, s2);
}
:
_declspec(dllexport) bool __stdcall cppPage1(char* Input, char* Output)
{
string str1 = Input;
//blablabla
strcat(Output, "Result#as#a#string");
}
そして、C#で、私はこれを使用私はStringBuilder
でいくつかのRAMを "取得"します.C#とC++は両方とも読み書きが可能です。 C++はRAMからInput
を読み取り、論理を計算して、RAMにあるOutput
に書き込み、C#が結果を得ることができるようにします。 StringBuilder.Length = 10000
に、ほとんどの状況で十分であることを確認してください。
C#でRAMを検討するのは良い方法ではないと思います。 C#とC++の正しい通信方法は何ですか?
1日 – sehe
@seheのワードRAMのほとんどファジー使用や、私がすべきメモリや何を言う?おそらく、 – hbrls
。あなたが実際に得ているのは、あなたが間接参照することを選択したメモリアドレス(=メモリへのポインタ)です。メモリは常にそこにあり、取得するためにinterop呼び出しを行う必要はありませんでした。 – sehe