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