powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / COM DLL как загрузить
12 сообщений из 12, страница 1 из 1
COM DLL как загрузить
    #32662829
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть вопроса вот в чем создаю я COM - inProc DLL в Vstudio6 без мастеров
создал получил dll зарегил его в реестре, пишу код который этот com использует

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
 // {3ED0ACD0-785E-4462-A554-FCB610E6880F} 

DEFINE_GUID(IID_ICalculator, 
0x3ed0acd0, 0x785e, 0x4462, 0xa5, 0x54, 0xfc, 0xb6, 0x10, 0xe6, 0x88, 0xf);

 // {52DD602C-0A9D-4328-B72D-3889402504DA} 
DEFINE_GUID(CLSID_CoClassCalculator, 
0x52dd602c, 0xa9d, 0x4328, 0xb7, 0x2d, 0x38, 0x89, 0x40, 0x25, 0x4, 0xda);

typedef HRESULT  (__fastcall *DLLGet) (
  REFCLSID rclsid,
  DWORD dwClsContext,
  COSERVERINFO * pServerInfo,
  REFIID riid,
  LPVOID * ppv
);

int main(int argc, char* argv[])
{
	HRESULT hrinit = CoInitialize (NULL);
	assert (hrinit == S_OK);

	ICalculator * pointee;
	HINSTANCE lib = CoLoadLibrary (L"H:\\docs_xp\\Visual Studio Projects\\com_calculator\\Debug\\com_calculator.dll" , TRUE);
	assert (lib);
	void * pfoo = GetProcAddress (lib , "DllGetClassObject");
	assert (pfoo);
	DLLGet get = (DLLGet)pfoo;

	HRESULT hr = get (CLSID_CoClassCalculator , 
		CLSCTX_INPROC_SERVER,  0 , IID_ICalculator, (void **) & pointee);

	 //HRESULT hr = CoGetClassObject (CLSID_CoClassCalculator ,  
	 //	CLSCTX_INPROC_SERVER, 0, IID_ICalculator, (void **) & pointee); 

	if (SUCCEEDED(hr)){
		printf ("OK");
	}
	else
		printf ("Failed");

	CoUninitialize ();
	return  0 ;
}


Обратите внимание на закоментаренный фрагмент - он - рекомендованный в MSDN не работает, а вот когда я руками загрузил библиотеку и вызвал метод - все пучком.
неработа заключается в том, что dll загружается (проверено, я понавсталял кучу отладочных месагабоксов, вызывается
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
STDAPI DllGetClassObject (REFCLSID rclsid , REFIID riid, LPVOID * ppv){
	if (rclsid != CLSID_CoClassCalculator)
		return CLASS_E_CLASSNOTAVAILABLE;
	CoClassCalculator * cocalc = new CoClassCalculator ();
	HRESULT hr = cocalc->QueryInterface (riid, ppv);
	if (FAILED (hr) ){
		delete cocalc;
	}
	return hr;
}
Но при возврате (на последней строке) срабатывает Access Violation

В чем глюк может быть?
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32662847
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интерестно , а ты с СОМ как с обычной DLL работаешь чтоль ?


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32662936
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вообще общего между com-inproc com і обычной dll очень много

авторИнтерестно , а ты с СОМ как с обычной DLL работаешь чтоль ?

а вопрос то к чему?
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32662985
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black zorroНу вообще общего между com-inproc com і обычной dll очень много

авторИнтерестно , а ты с СОМ как с обычной DLL работаешь чтоль ?

а вопрос то к чему?

ну незнама ,
есть пару примеров может на что наведут .
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32662986
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32663985
Mr.Buba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не парся, сделай все визардом, код будет рабочий и глюков не будет. Ну или сделай визардом то же самое и сравни код с оригиналом
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32664154
Siebentework
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А кто-нить делал АктивыХ без MFC на чистых Апях?

Трудно это?
Просто скоро может понадобиться...
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32664502
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiebenteworkА кто-нить делал АктивыХ без MFC на чистых Апях?

Трудно это?
Просто скоро может понадобиться...

А вот я же бросил примеры ...
можешь взглянуть .
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32664831
Mr.Buba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiebenteworkА кто-нить делал АктивыХ без MFC на чистых Апях?

Трудно это?
Просто скоро может понадобиться...

а ты и не будешь пользоваться MFC, будешь использовать WTL - те же яйца только сбоку :)
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32664969
Seiben
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автора ты и не будешь пользоваться MFC, будешь использовать WTL

Это чё? Примеры на WTL построены?? Я сроду ATL не использовал...(не, ну было один раз по-молодости...)

Ок, ладно пойду-гляну. Если чё - буду задавать вопрос второй раз :)
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32665838
Mr.Buba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Seiben
Это чё? Примеры на WTL построены?? Я сроду ATL не использовал...(не, ну


http://sourceforge.net/projects/wtl/
...
Рейтинг: 0 / 0
COM DLL как загрузить
    #32668802
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем я поборол все это чудо, ошибка оказалась довольно дибильная
я забыл указать __stdcall при декларации методов моего интерфейса.

и еще вопрос в догонку в дельфе когда я выполняю Import TypeLib дельфа слетает от моего TLB файла аргументируя ошибку в реестре, когда я пробую тоже но от имени админа, то все путем, фишка в том, что я не могу работать от имени администратора, и это создает некоторые трудности, не подскажет ли кто что дельфе нужно при этом импорте я считал что она просто генерит файл с обертками и больше ничего, или я не прав.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / COM DLL как загрузить
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]