Re[2]: Есть такой адрес в загруженном модуле Exe.
От: flashpoint Россия  
Дата: 28.03.06 12:17
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Здравствуйте, flashpoint, Вы писали:


F>>const Thread::`vftable'

F>>или
F>>??_7Thread@@6B@

F>>Подскажите плз.. как используя функцию GetProcAddress(hExe,"???_7Thread@@6B@")


F>>преобразовать это в класс Thread чтобы далее вызывать его методы ???


A>В корне неправельный подход к экспотру/импорту классов. Нужно экпортировать extern "C" функцию, которая будет предоставлять тебе доступ к объекту класса. Получив объект, ты без проблем сможешь вызывать его методы.

A>
A>#if defined(building_dll) // defined in your build environment
A>#define DLL_EXPORT __declspec(dllexport)
A>#else
A>#define DLL_EXPORT __declspec(dllimport)
A>#endif

A>extern "C" DLL_EXPORT Thread * GetThread();
A>class DLL_EXPORT Thread
A>{
A>...
A>};

A>// your client code
A>typedef Thread * (*GetThreadFuncPtr)();
A>GetThreadFuncPtr GetThreadFunc = static_cast<GetThreadFuncPtr>(GetProcAddress(hDll, "GetThread"));
A>Thread * obj = GetThreadFunc();
A>


Меня просто неправильно поняли
Задача такова:
Мой COM модуль загрузила внешняя программа. Мне надо из своего модуля получить указатель на AFX_MODULE_STATE*
Я знаю что у этой программы есть загруженный константный класс Thread у которого есть нужные мне методы. Их описание у меня тоже есть.
Я знаю что этот модуль содержит экпортируемую-задекорированную функцию const Thread::`vftable'
Теперь мне надо получив указатель на таблицу vftable превратить это в класс. Это мне и нужно !
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.