Спасибо за ответ, Ганс. Мне наконец удалось избежать этой структуры, так что никаких проблем.
Остались только некоторые функции, которые я не знаю, как сделать маршалл.
int rib_init (rib_callbacks_t * cb, void * data);
rib_callbacks_t - это структура делегатов, подобная этой:
[StructLayout(LayoutKind.Sequential)]
internal struct rib_callbacks_t
{
public NewDevConnectedCallback new_dev_connected;
public DevDisconnectedCallback dev_disconnected;
public DcConnectedCallback new_dc_connected;
}
rib_feature_t * rib_register_feature (char * desc);
Я должен вернуть этот метод как IntPtr для отмены маршалла с Marshall.IntPtrToStructure, я не прав?
rib_feature_t ** rib_register_many_features (uint16_t * dev_type, char ** desc, int count);
Этот, которого я не знаю, как сделать маршалл. Двое ** сломали меня: (.
int rib_send (rib_dc_t * dc, const void * msg, size_t len);
int rib_recv (rib_dc_t * dc, void * buf, size_t len);
В этих случаях я использовал [MarshalAs (UnmanagedType.LPArray)] byte [] buf / msg ... это нормально?
Привет