Подключение DLL на C++ к проекту - C#
Формулировка задачи:
Моим преподавателем было дано задание, в котором необходимо реализовать работу с ассемблерными вставками на C#. Так как подобным ранее я ни разу не занимался, то возникли проблемы. А если быть точнее, то к проекту на C# подключается DLL на С++ (подключается с помощью DllImport), где и вызываются процедуры на языке ассемблера. Но в момент вызова метода из DLL программа прекращает работу с AccessViolationException.
Подключение библиотеки в основном проекте:
Содержимое DLL:
Буду благодарен за любую подсказку и помощь)
[DllImport("Sorting_on_asm.dll", SetLastError = true)]
static extern void asm_fast_sort(string[] massiv, int dlina);extern "C" int fastasm (string*[], int);
extern "C" int q_sort (int , int);
extern "C"__declspec(dllexport) void asm_fast_sort (string* arr[], int count)
{
int kol = count;
fastasm(arr, kol);
q_sort(0, kol - 1);
}Решение задачи: «Подключение DLL на C++ к проекту»
textual
Листинг программы
void func ([MarshalAs(UnmanagedType.LPStr)] string str); //маршалинг параметра-строки из неуправляемого кода
public static string StringFrom(byte[] lpstr) //можно строку гонять как массив байт(передавая еще и длину строки)
{
int c = 0;
while(c < lpstr.Length && lpstr[count] != 0)
count++;
return Encoding.GetEncoding(1251).GetString(lpstr, 0, count);//- и помучаться с кодировкой
}