Я разрабатываю приложение в Mac Os X на С# (с моно), мне нужно взаимодействовать с некоторыми функциями, но я не знаю, как это сделать.
Я сделал простое приложение на C, но теперь мне нужно сделать то же самое на C#, я знаю, что должен использовать DllImport, но я не знаю, как мне это сделать.
Функция, которую я хочу вызвать в C#, такова:
mach_vm_read(vm_map_t target_task, mach_vm_address_t address, mach_vm_size_t size, vm_offset_t *data. mach_msg_type_number_t *data_count);
определяется в одном из этих файлов
#include <mach/mach.h>
#include <mach/mach_vm.h>
Спасибо
Ответ 1 · рейтинг 1 · James Love
Вы можете объявить и вызвать метод в C#, украсив вызов метода атрибутом [DllImport()], например так (при условии, что ваш метод, который вы хотите вызвать, действительно является статическим методом и не имеет возвращаемого типа):
[DllImport("YourDll.dll")]
public static extern void mach_vm_read(vm_map_t target_task, mach_vm_address_t address, mach_vm_size_t size, vm_offset_t *data. mach_msg_type_number_t *data_count);
Ответ 2 · рейтинг 1 · Michael Armitage
Если у вас много C++, вы можете использовать инструмент под названием Swig, чтобы создать оболочку C# для всех ваших открытые функции C++ с использованием простых шаблонов. Мы использовали это с большим успехом в Windows, Mac OS и Linux.