В настоящее время у меня есть старая неуправляемая C ++ DLL, использующая MFC.Эта DLL имеет кучу кода, который является многопоточным и написан еще в 2003 году с использованием VC6.К сожалению, этот код больше не работает.
Мне было поручено найти альтернативный способ запуска этого многопоточного кода, чтобы он функционировал как задумано.Кто-то до меня уже переписал его на C #, и мне нужно перенести этот код C # на VC ++.Я провел небольшое исследование и понял, что могу сэкономить время в процессе переноса, просто перенеся код C # на VC ++ (используя .NET Framework).Но потом я понял, что моя старая MFC DLL не может запустить этот код .NET.
Моя идея состоит в том, чтобы написать этот многопоточный код в DLL-библиотеке VC ++ (с использованием .NET Framework) и использовать некоторую форму взаимодействия, чтобы иметь возможность вызывать функции из старой DLL в новую DLL.
Я изучил совместимость COM, а также классы-оболочки.Каков наилучший способ сделать это?Есть ли уроки, которые могут помочь мне с этой задачей?(Я уже провел обширный поиск, и существует множество учебных пособий, в которых используются неуправляемые библиотеки DLL C ++ и библиотеки C #, но не так много, что относится к моей ситуации).
Как вы знаете, я не могу скомпилировать старыйDLL с / clr, так как эта DLL также размещена в старом приложении Win32.Компиляция с / clr приводит к сбою приложения, иначе это уже было бы сделано.
ДЛЯ УТОЧНЕНИЯ: мне любопытно, почему вызов функций, находящихся в C # DLL, из неуправляемой C ++ DLL через COM-взаимодействие кажется таким простым по сравнению с выполнением точно такой же вещи с использованием управляемой C ++ DLL.У меня даже есть подтверждение концепции между C # и C ++, но я никак не могу понять, как выполнять точно такую же задачу с C ++.Неужели не бывает простого руководства по вызову одной простой (скажем, «Add») функции из неуправляемого C ++ в управляемый C ++?