如何将字节数组从 c# 传递到 MFC ActiveX

Posted

技术标签:

【中文标题】如何将字节数组从 c# 传递到 MFC ActiveX【英文标题】:How to pass byte array from c# to MFC ActiveX 【发布时间】:2014-04-04 06:58:17 【问题描述】:

我正在编写简单的 c# 应用程序。

这真的很简单。 c# app以字节数组为参数调用activeX函数,然后, activeX 接收字节数组并呈现出来。

我在问,我必须在 MFC ActiveX 中使用哪种数据类型?变种?变体*?

任何帮助将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

VARIANT 类型为 VT_ARRAY|VT_UI1。代码示例:

char original_buffer[1024];
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsabound[1];

// fill original_buffer here

rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 1024;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
void* p=(char*)psa->pvData;

if (psa)
                   
    VARIANT variant_buffer;
    VariantInit(&variant_buffer); 
    variant_buffer.vt = VT_ARRAY|VT_UI1;
    variant_buffer.parray = psa;

    void* p = (char*)psa->pvData; 
    memcpy(p, (void*)original_buffer, 1024); 

    // do someting with the array here

    SafeArrayDestroy(psa);

【讨论】:

以上是关于如何将字节数组从 c# 传递到 MFC ActiveX的主要内容,如果未能解决你的问题,请参考以下文章

将字节数组从 c++ 传递到 c# 程序集都有哪些不同的方法?

将字节数组从 C# 传递到 C++ DLL 作为 char*

如何通过引用从 c# 到 c++ 传递字节数组

将字节数组从 Unity C# 传递到 C++ 库方法

使用 Dllimport 将一个非常大的字符串作为字节数组从 C++ 传递到 C#

将 C# 3D 数组作为 1D 字节数组传递给 C++ 库