Маршалинг 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");
        }
    }

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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