Здравствуйте! Возникла следующая проблема: появилась необходимость вызвать функцию из приложения, написанного на С++, путём вызова ее из памяти (если, конечно, это возможно) на С#. Функция в оригинале выглядит примерно так:
void Send(int Index, int SubIndex, const char* Message)
{
// Some code
}
Указатель в памяти на эту функцию я могу получить. Достаточно ли этой информации для ее вызова и как это можно сделать?
Если функция загружена в вашем приложении, тогда так:
delegate int SendDelegate(int Index, int SubIndex, IntPtr Message);
int Send(int index, int subIndex, string message)
{
IntPtr funcPointer = ...; // здесь адрес вашей функции
var func = Marshal.GetDelegateForFunctionPointer<SendDelegate>(funcPointer);
IntPtr lpstr = Marshal.StringToHGlobalAnsi(message); // выделяем память под char*
int result = func(index, subIndex, lpstr);
Marshal.FreeHGlobal(lpstr); // освобождаем память
return result;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите, как можно загрузить изображение во vuejs без перезагрузки страницы, то есть только добавляю, и отображает на странице мгновенно
считывание EXIF данный с помощью пакета exifНеобходимо вытащить оттуда только геоданные и по ним разместить фото на карте
У меня есть набор функций, какие должны выполнится после загрузки контента, функцией loadТак вот все что происходит до load вызывается один раз,...