Ошибка компилятора: C3861 'GetModuleHandleEx': идентификатор не найден - PullRequest
1 голос
/ 05 января 2011
#include <windows.h>
#include <stdlib.h>
#include <tchar.h>
#ifdef __cplusplus
extern "C"
#endif
void * _ReturnAddress(void);

#pragma intrinsic(_ReturnAddress)
//I inserted the following code inside one of the functions

void func()
{
------------
-------
----
-
    HMODULE module_handle;
    TCHAR module_name[4096];
    DWORD flag = 0x00000004;

    GetModuleHandleEx(flag, (LPCTSTR) _ReturnAddress(), &module_handle);

    GetModuleFileName(module_handle,module_name,4096);

-----
--
}

Когда я компилирую код как отдельный проект, все работает отлично.Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 05 января 2011

Даже если ваш код компилируется, все, что вы делаете, пахнет ошибкой.

Если вы используете обратный адрес для принятия какого-либо решения, связанного с безопасностью, stop . Вы не можете доверять обратному адресу вызывающей функции .Нет, на самом деле вы не можете доверять обратному адресу вызывающей функции .

1 голос
/ 05 января 2011

Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0501 или новее.Для получения дополнительной информации см. Использование заголовков Windows .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...