次のシグネチャを持つ C# 関数があります。
int Get1251Bytes(string source, byte[] result, Int32 lengthOfResult)
C++ から呼び出します。コンパイラから、2 番目のパラメーターには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
正常に動作し、配列を更新します。私は何を間違っていますか?