Управляемый dll в нативном коде (через com). Это в процессе или вне процесса com сервера?

мне нужно было использовать управляемую динамическую библиотеку (c #) в моем родном коде (c ++). я нашел решение
вот оно было
(http://support.microsoft.com/kb/828736).

но меня беспокоит то, что

1) используются ли управляемые динамически связанные библиотеки в нативном коде через com act как на процессных com серверах? , если да как это может быть?

2) если нет, то как динамически связанная библиотека может действовать как сервер com процесса без переноса исполняемым файлом.

1

Решение

Это внутрипроцессная конфигурация. Это не намного более «невозможно», чем непосредственное использование механизма P / Invoke. Когда ты бежишь regasm вносит необходимые изменения в реестр, чтобы при вызове клиента CoCreateInstance() COM знает, что ему нужно P / Invoke функции из соответствующей сборки .NET.

0

Другие решения

  1. COM знает, как запустить CLR для управляемых DLL, так что это может работать для управляемых DLL, которые могут работать с соответствующей разрядностью (т. Е. AnyCPU или 32/64 бит в зависимости от ситуации).
  2. Для кросс-битности DLL я верить что CLR знает, как запустить DllHost.exe и запустить управляемую DLL вне процесса. Это будет медленнее, конечно.
0

По вопросам рекламы [email protected]