Имеется функция в dll, которая создает массив строк внутри себя и возвращает его + количеств элементов по указателю в аргументе(С++):
extern "C" __declspec(dllexport) char** GetListAdapters(int*);
Как мне импортировать эту функцию в приложении .NET C#? И, что самое важное, получить все значения массива строк?
Моя С++ функция:
char** WINAPI MyCppFunc(int * count)
{
char** result = new char*[3];
result[0] = "qwerty";
result[1] = "1234567890";
result[2] = "!";
*count = 3;
return result;
}
.NET импорт:
[DllImport("CppDll.dll")]
public static extern IntPtr MyCppFunc(ref int count);
И получение массива строк:
int count = 0;
IntPtr ptr = MyCppFunc(ref count);
string[] result = new string[count];
for (int i = 0; i < count; i++)
{
IntPtr charPtr = Marshal.ReadIntPtr(ptr + i * Marshal.SizeOf<IntPtr>());
result[i] = Marshal.PtrToStringAnsi(charPtr);
}
Вам нужно будет узнать точное имя экспортируемой функции (в моем примере через def файл они совпадают), например, через утилиту dumpbin
. Она идет вместе со студией.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый деньВ ClickOnce пытаюсь консольно сменить Installation Folder
Скачал стили панели элементов windows form C# для visual studio, но не знаю куда кидать файлыКачал отсюда-->WPF Themes
Подскажите пожалуйста! Я в DataSet ResultData гружу данные из БДА затем выбираю их в массив, который потом прикручиваю к комбобоксу в качестве источника...
Пытаюсь нарисовать многоугольник внутри pictureBox1, но он не выводится, ниже приведет листинг, что я делаю не так или же как правильно вызвать...