C++ 获取C++;从函数返回指向指针引用的指针

C++ 获取C++;从函数返回指向指针引用的指针,c++,vb.net,pointers,C++,Vb.net,Pointers,目前我被困在一个C++调用函数中。p> 它有一个获取值的函数。但是,函数的返回值是布尔值(如果没有错误,则为true)。我们想要的值在一个参数中: const char **值< /> >如果我正确地理解C++,这是指针的指针。通常,可以在.net中通过在参数处使用ByRef来处理指针,从而更改输入的值。然而,我不知道如何使指针工作 短篇故事: 如何转换: extern "C" __EXPORT bool funcName(const char** value) 到C#/VB.net 这适用于

目前我被困在一个C++调用函数中。p> 它有一个获取值的函数。但是,函数的返回值是布尔值(如果没有错误,则为true)。我们想要的值在一个参数中:<代码> const char **值< /> >如果我正确地理解C++,这是指针的指针。通常,可以在.net中通过在参数处使用ByRef来处理指针,从而更改输入的值。然而,我不知道如何使指针工作

短篇故事: 如何转换:

extern "C" __EXPORT bool funcName(const char** value)
到C#/VB.net

这适用于
const char*value
但不适用于
const char**value


作为布尔值的公共共享函数FuncName(ByRef GetValue作为字符串)
端函数
将返回值设置为字符串
私有函数GetValue()作为字符串
FuncName(此处返回值)
返回此处返回值
端函数

ByRef IntPtr
,则需要不安全的代码来生成可传递给
系统::字符串
构造函数的
字节*
。别忘了将指针传递回库提供的正确的释放函数,不管是什么。嗨,Ben,谢谢你给我这个宝贵的建议。为了使用非托管值,您必须将其存储在内存中,然后制作一个我们可以使用的副本。更多信息可以在这里找到:
封送。复制
并不是你想要的。如果它是用户定义的类型,那么
Marshal.PtrToStructure()
将是合适的;由于它是一个字符串,因此是将副本复制到托管对象中的正确工具。
ByRef IntPtr
,那么您需要不安全的代码来生成可传递给
System::string
构造函数的
字节*
。别忘了将指针传递回库提供的正确的释放函数,不管是什么。嗨,Ben,谢谢你给我这个宝贵的建议。为了使用非托管值,您必须将其存储在内存中,然后制作一个我们可以使用的副本。更多信息可以在这里找到:
封送。复制
并不是你想要的。如果它是用户定义的类型,那么
Marshal.PtrToStructure()
将是合适的;由于它是一个字符串,因此是将副本复制到托管对象的正确工具。