我有一个带有以下签名的 C# 函数:
int Get1251Bytes(string source, byte[] result, Int32 lengthOfResult)
我从 C++ 中调用它。编译器告诉我第二个参数必须有SAFEARRAY*
类型。所以我这样称呼它:
SAFEARRAY* safeArray = SafeArrayCreateVector(VT_UI1, 0, arrayLength);
char str[] = {'s', 't', 'a', 'c', 'k', '\0'};
converter->Get1251Bytes(str, safeArray, arrayLength);
但是 safeArray 没有更新,它仍然包含 zores。但我Get1251Bytes
在 C# 单元测试中测试了函数。它工作正常并更新result
数组。我究竟做错了什么?