2つの通信コンポーネントがあります。1つは管理対象、もう1つは管理対象外です。管理対象は、管理対象外の実装から文字列(同じ文字列または単なるコピー)を取得する必要があります。次のコードを試しました。
// Unmanaged code
const char* GetTestName(Test* test)
{
return test->getName();
}
// Managed wrapper
[DllImport(DllName, EntryPoint = "GetTestName")]
public static extern IntPtr GetTestName(IntPtr testObj);
// API Invocation
IntPtr testName = GetTestName(test);
string testStr = Marshal.PtrToStringAuto(testName);
ただし、testStrの値は期待どおりではありません。私がここで間違っていることを誰かが知っていますか?どんな提案も本当に役に立ちます。