Re: Использование C# COM-сервера
От: shelkovnikov Россия  
Дата: 13.10.06 03:32
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Здравствуйте!

_>Ситуация такая: я создаю сервер на С# с простым классом и интерфейсом к нему (как описано в MSDN — Interop tutorial). Затем я регистрирую его при помощи

_>
_>regasm somepath\....\CSharpServer.dll /tlb: somepath\.....\CSharpServer.tlb
_>

_>Все регистрируется успешно.

_>Затем в С++ я импортирую библиотеку типов при помощи #import из того места, где она образовалась, т.е. из \CSharpServer\bin\debug. Она импортируется (проект компилируется), но во время выполнения при вызове CoCreateInstance происходит ошибка: не найден файл. После "побайтного" сравнения с примером из MSDN нашел фишку — они копируют dll в директорию клиента. Может, я чего-то не понимаю, тогда объясните — какой же это COM? Разве COM не должен сам уметь определить, где лежит зарегистрированная dll??


если внимательно посмотреть в реестре, то видно в отличие от обчного com в inprocServer32 прописывается не путь до com-сервера, а mscoree.dll и указано имя сборки для загрузки. так вот эта сборка либо располагается в GAC либо лежит в доступном для клиента месте (в вашем случае в его директории)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.