假定有與純-C接口類似以下本機函數,從天然DLL導出:對於編組數組,可以使用P/Invoke [In,Out]屬性嗎?
// NativeDll.cpp
extern "C" void __stdcall FillArray(
int fillValue,
int count,
int* data)
{
// Assume parameters are OK...
// Fill the array
for (int i = 0; i < count; i++)
{
data[i] = fillValue;
}
}
以下的P/Invoke正常工作(與VS2010 SP1測試):
[DllImport("NativeDll.dll", CallingConvention=CallingConvention.StdCall)]
public static extern void FillArray(
int fillValue,
int count,
[In, Out] int[] data
);
以及該P /調用,與上述相同,但不的[In, Out]
屬性:
[DllImport("NativeDll.dll", CallingConvention=CallingConvention.StdCall)]
public static extern void FillArray(
int fillValue,
int count,
int[] data
);
那麼,那些[In, Out]
屬性可選用於封送數組? 他們的目的是什麼,如果有的話? 可以在我們的P/Invoke聲明中省略它們嗎?
呃...我已經花了好幾個小時解決了編譯x86/x64 /'任何CPU'的問題...... – JerKimball