如何将字节数组从 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*