У меня есть DLL на основе ATL/COM, созданная с использованием VC++ 6.0. Он используется для различных исполняемых файлов, построенных с использованием VB6.ATL/COM: Определение COM-интерфейса, который не будет доступен за пределами DLL?
Я хочу добавить некоторые COM-интерфейсы, которые не будут доступны через VB6, для внутреннего использования только DLL. Я хочу, чтобы они были COM-интерфейсами, а не только интерфейсами C++ из-за того, что я буду использовать их для объектов, к которым у меня есть только ссылки интерфейса COM (во время использования).
То есть, я не знаю (во время использования), что этот указатель указывает на CFoo; Я просто знаю, что это указывает на IFoo, где IFoo является COM-интерфейсом, опубликованным так, что VB6 знает об этом. Из этого указателя IFoo я хочу получить указатель IFooInternal, который будет реализовывать каждый класс, который реализует IFoo (а не только CFoo). Более того, я не хочу, чтобы IFooInternal был доступен вне самой DLL; например, я не хочу, чтобы IFooInternal был доступен VB6.
Любая помощь с этим была бы весьма признательна. Также будут предложены альтернативные способы достижения одной и той же общей цели. Заранее спасибо.
Duplicate http://stackoverflow.com/questions/1191012/how-to-prevent-coclass-implementations-from-being-exposed-in-an-atl-type-library/1192207#1192207 –
Это * не * дубликат вопроса, с которым вы связались. В этом вопросе интерфейс будет открыт для Visual Basic (и других клиентов за пределами самой DLL). Это именно то, что я пытаюсь * избегать *. – 2009-10-01 21:16:11