Если вы действительно хотите сделать все это через C API и выполнить конечный прогон вокруг COM и C ++, вы можете сделать следующее. Но сначала выясните, действительно ли это необходимо! Я подозреваю, что в большинстве случаев это не будет.
Шаг 1. Создайте сборку C # .Net, которую вы хотите вызвать.
Шаг 2. Создайте сборку CLI / C ++ в смешанном режиме с экспортированными внешними функциями «C». Пусть эта сборка вызывает сборку C $.
Шаг 3. Создайте приложение C, которое вызывает экспортированные функции стиля C из библиотеки DLL, созданной на шаге 2.
Что нужно учитывать.
A. Есть ли необходимость в том, чтобы приложение C (по сравнению с C ++ / COM) напрямую вызывало сборку .Net?
Другими словами, почему бы не использовать экспортированные из C ++ и COM в COM методы .Net, если вы действительно должны иметь смешанную (.Net и не .Net) систему / приложение?
B. Будут ли написанные вами API обертками для классов? Если так, как вы будете управлять их временем жизни? (например, будете ли вы создавать / использовать дескрипторы? Как вы будете управлять их отношениями с реальными объектами gc ... и т. д.)
C. Строки. Они обрабатываются очень по-разному между C и .Net. Убедитесь, что вы знакомы с их различиями и как правильно отправлять строки через эти границы ... Подсказка: CString - ваш друг.