Маршалинг C++ библиотеки в подключенной библиотеке на C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Я пишу dll для Unigraphics. Входной точкой для Unigraphics в C++ является
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
для выгрузки используется
extern "C" int ufusr_ask_unload( void )
Входной точкой для Unigraphics в C# является
Main()
для выгрузки используется
GetUnloadOption(string dummy)
Теперь стоит такая задача, что необходимо запустить dll с вин формами написаную на С# и запустить из нее dll написаную на С++. Как сделать что бы код на С++ сработал в Unigraphics если dll на С++ запускается из под dll на С#, а dll на С# запускается из под Unigraphics?

Решение задачи: «Маршалинг C++ библиотеки в подключенной библиотеке на C#»

textual
Листинг программы
private IntPtr hExe;
DllImport("kernel32")]
static extern IntPtr LoadLibrary(string lpFileName);
 
private void Form1_Load(object sender, EventArgs e)
    {
        hExe = LoadLibrary("ваша С++.dll");
        if (hExe == IntPtr.Zero)
        {
            throw new ApplicationException("Can not load " + "ваша С++.dll");
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5