相关疑难解决方法(0)

从const char*复制到字节数组C++/c #interop Marshal :: Copy

我正在尝试将C++中的图像发送到C#,并使用C++管理的互操作(编组).从字符串image->getStream()返回a const char*.

我的Marshal::Copy功能异常.

'System.AccessViolationException'mscorlib.dll中发生了未处理的类型异常

附加信息:尝试读取或写入受保护的内存.这通常表明其他内存已损坏.

我是否正在从复制const char*到字节数组做正确的事情?我的dll是在VS2010中使用ASCII字符集编译的.

array<System::Byte>^ OsgViewer::getLastImage()
{
    array< Byte >^ byteArray;

    m_ImageQueue->lock();

    int index = m_ImageQueue->getCurrentImageIndex();
    std::shared_ptr<Image> image = m_ImageQueue->getImage(static_cast<unsigned int>(index));
    if( image && image->isValid() == true)
    {
        int wLen = image->getStreamSize();
        char* wStream = const_cast<char*>(image->getStream());
        byteArray = gcnew array< Byte >(wLen);

        // convert native pointer to System::IntPtr with C-Style cast
        Marshal::Copy((IntPtr)wStream ,byteArray , 0, wLen);
    }

    m_ImageQueue->unlock();
    return byteArray;
}
Run Code Online (Sandbox Code Playgroud)

Image是一个自制的C++类

class ADAPTER Image
{
public : …
Run Code Online (Sandbox Code Playgroud)

c# c++ c++-cli marshalling

2
推荐指数
1
解决办法
3665
查看次数

标签 统计

c# ×1

c++ ×1

c++-cli ×1

marshalling ×1