如何使用Safearray
將自定義類型數組(僅包含屬性的類)從C++傳遞到C#?正在使用VT_RECORD
類型正確的方式來做到這一點?將自定義類型的Safearray從C++傳遞到C#
我正在嘗試以下方式,但
對類數組的引用以NULL的形式獲取到託管代碼。SafeArrayPutElement
嘗試填充safearray時返回錯誤
我有一些像在管理世界如下:
[ComVisible(true)]
public interface IStatistics
{
double Mean { get; set; }
double StdDev { get; set; }
}
[Serializable]
[ComVisible(true)]
public class Statistics : IStatistics
{
public Mean { get; set; }
public double StdDev { get; set; }
}
不可控制的世界:
HRESULT hr = CoInitialize(NULL);
...
SAFEARRAY *pEquationsStatistics;
// common dimensions for all arrays
SAFEARRAYBOUND dimensions[1];
dimensions[0].cElements = 2;
dimensions[0].lLbound = 0;
pEquationsStatistics = SafeArrayCreate(VT_RECORD, 1, dimensions);
...
for (long i = 0; i < dimensions[0].cElements; i++)
{
long indices[1];
indices[0] = 0;
...
// Equation statistics
IStatisticsPtr pIStatistics(__uuidof(Statistics));
pIStatistics->PutMean(1.0); // so far so good
result = SafeArrayPutElement(pEquationsStatistics, indices, pIStatistics);
...
indices[0]++;
}
請注意,我可以使用SafeArray
與不通過的BSTR
其他陣列兩個應用程序之間的問題。所以這是傳遞結構特有的東西。
斯特凡諾
什麼是錯誤? – fretje 2009-06-15 07:56:30