我在C#中調用C++函數。C#結構到C++編組問題
這是C++函數頭:
int src_simple (SRC_DATA *data, int converter_type, int channels) ;
而這正是equivilent C#函數:
[DllImport("libsamplerate-0.dll")]
public static extern int src_simple(ref SRC_DATA sd, int converter_type, int channels);
這是C++的SRC_DATA結構,然後在C#:
typedef struct
{ float *data_in, *data_out ;
long input_frames, output_frames ;
long input_frames_used, output_frames_gen ;
int end_of_input ;
double src_ratio ;
} SRC_DATA ;
這是我定義的C#結構:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct SRC_DATA
{
public IntPtr data_in, data_out;
public long input_frames, output_frames;
public long input_frames_used, output_frames_gen;
public int end_of_input;
public double src_ratio;
}
最大的問題是最後一個參數src_ratio沒有正確傳遞給C++函數(它將其視爲0或無效)。
我的聲明是否正確?
感謝
你說得對,pack = 1是一個錯誤..我只是讓它使用默認:) – Roey 2010-07-12 08:35:28