В настоящее время я изо всех сил пытаюсь использовать COM-dll на простой системе, которую я создал. Все компилируется успешно, но во время выполнения CoCreateInstace возвращает S_OK, но каким-то образом мой указатель объекта возвращает NULL.Ошибка создания COM-объекта
Этот указатель интерфейса создается в заголовке моего класса. Самое странное, что создание этого же типа указателя в стеке метода приводит к правильному объекту, но последующие вызовы __hook включают нарушение прав доступа при попытке создать класс BASE com.
Некоторых других аспектов, которые могут быть полезны:
Пытался запустить программу с CoInitalizeEx начался как COINIT_MULTITHREADED и COINIT_APARTMENTTHREADED
Проект представляет собой DLL, который использует DLL COM в нем
Я пробовал тот же метод, не создавая новую тему, и ошибка сохраняется
Я сделал тестовую программу (без потоков, исполняемых файлов), и объект создается нормально и правильно подключен. Поэтому я предполагаю, что это связано с тем, что это сама DLL или связанная с потоком.
PS: Как вопрос бонуса, почему google не возвращает ничего благоприятного, связанного с COM? :)
Я так не думаю, потому что таким образом приложение образца, которое я тоже сделал, тоже не работает. – 2009-06-25 11:45:43