因为工作需要,用 Matlab 调用 COM,实现一些功能。
之前也没用接触 Matlab 处理 COM 的问题,只有从文档开始慢慢摸索。
谁知一开始就遇到问题了,创建 COM 实例不成功,无法传递结构体变量,问题是在太多。
尝试了很多,只能用数组代替结构体。遇到 64位程序调用 32 位 DLL COM 的问题,那就创建个代理的 EXE COM 作为中转。
于是代码里就有了很多 VT_ARRAY|VT_VARIANT 类型的 VARIANT 变量。
VARIANT var;
VariantInit(&var);
V_VT(&var) = VT_ARRAY|VT_VARIANT;
可以把不同类型的变量都放到这个 VARIANT 里,按结构体里变量的顺序排列就行了。