Valery B
Гость
|
|
« : 11-03-2004 09:03 » |
|
Из Managed C++ вызываю функцию AfxGetInstanceHandle() в версии Debug - генерится Assertion и возвращается ноль. В Release версии возвращает ноль. Как заставить эту функцию возвращать Instance? Уточнение!!! Функция содержится внутри DLL extention, которая связывается динамически.
|
|
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #1 : 11-03-2004 11:43 » |
|
AfxGetInstanceHandle это функция из библиотеки MFC, причем здесь MC++ ?
|
|
|
Записан
|
|
|
|
Valery B
Гость
|
|
« Ответ #2 : 11-03-2004 11:58 » |
|
Вызов этой функции происходит из DLL extension. DLL extension написана с использованием MFC. Обращение к DLL-ки происходит из MC++. По такой цепочки происходит вызов этой ф-ции.
|
|
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #3 : 11-03-2004 13:18 » |
|
А что assert выдает ?
|
|
|
Записан
|
|
|
|
Valery B
Гость
|
|
« Ответ #4 : 11-03-2004 13:27 » |
|
Вот пример этого макроса.
_AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle() { ASSERT(afxCurrentInstanceHandle != NULL); return afxCurrentInstanceHandle; }
|
|
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #5 : 11-03-2004 14:22 » |
|
А как у тебя MFC линкуется к dll'ке ? MC++ код выполняется в своем домене, а к native коду обращается через PInvoke, в этом тоже может быть проблема и зачем тебе вообще эту функцию вызывать, ну вернет она тебе хендл dll'ки (во всяком случае должна это сделать), а толку от него ?
|
|
|
Записан
|
|
|
|
Valery B
Гость
|
|
« Ответ #6 : 12-03-2004 05:56 » |
|
DLL - extention всегда прилинковывается динамически!! Как я уже говорил, вызов функции происходит из DLL extention и используется для внутренней работы. Я ее явно не вызываю.
|
|
|
Записан
|
|
|
|
|