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