Я вызываю функцию C++ изнутри C#.C# struct to 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);
Это структура SRC_DATA в C++, а затем в 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