Из трех способов вызова собственного кода из управляемого кода (COM Interop, P/Invoke и IJW или C++/CLI interop), COM Interop является самым медленным. И если ваш существующий собственный код не в форме COM-компонента, то это также самое сложное, потому что это будет шаг 1.
Для использования P/Invoke вам понадобятся некоторые функции C-стиля (extern C), которые продолжайте и вызовите существующий код. Чтобы использовать IJW или C++/CLI interop, вы реализуете класс public ref
(в файле скомпилированный/clr) с методами, которые идут дальше и вызывают ваш существующий код. Это зависит от вас, что вам будет легче. После того, как у вас есть обертка, из C# вы можете сделать PInvoke с атрибутом DllImport
при объявлении функций, а затем вызывать их как обычно. Чтобы сделать IJW, вы добавляете ссылку на сборку с общедоступным классом ref в нем и вызываете методы в этом классе, как обычно.
Моя рекомендация состоит в том, чтобы спросить, хотите ли вы какой-то шаблон фасада, где вы ставите некоторую логику перед взаимодействием - если да, то идите IJW. Также, если вы хотите контролировать маршалинг, перейдите в IJW. Если нет, перейдите в P/Invoke. Но в любом случае работает.
Большое спасибо за все предложения !!! Я пытался найти дополнительную информацию об упаковке, решении Pinvoke. У MFC Dll много классов/enums/structs и т. Д. ... Можно ли экспортировать их каким-либо образом. Я обнаружил, что легко экспортировать функцию, но не уверен в этом !!! – Harsha