Обсуждение: Errors building on windows

Поиск
Список
Период
Сортировка

Errors building on windows

От
Dave Cramer
Дата:
I am getting the following errors:

loadlib.c(114): error C2373: '__pfnDliFailureHook2': redefinition; different type modifiers
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\delayimp.h(141): note: see declaration of '__pfnDliFailur
eHook2'
loadlib.c(115): error C2373: '__pfnDliNotifyHook2': redefinition; different type modifiers
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\delayimp.h(134): note: see declaration of '__pfnDliNotify
Hook2'
loadlib.c(129): error C2166: l-value specifies const object
loadlib.c(190): error C2166: l-value specifies const object
loadlib.c(198): error C2166: l-value specifies const object
loadlib.c(229): error C2166: l-value specifies const object
loadlib.c(237): error C2166: l-value specifies const object

Which appear to be from:

// Prior to Visual Studio 2015 Update 3, these hooks were non-const.  They were
// made const to improve security (global, writable function pointers are bad).
// If for backwards compatibility you require the hooks to be writable, define
// the macro DELAYIMP_INSECURE_WRITABLE_HOOKS prior to including this header and
// provide your own non-const definition of the hooks.
ExternC
#ifndef DELAYIMP_INSECURE_WRITABLE_HOOKS
const
#endif
PfnDliHook   __pfnDliNotifyHook2;

// This is the failure hook, dliNotify = {dliFailLoadLib|dliFailGetProc}
ExternC
#ifndef DELAYIMP_INSECURE_WRITABLE_HOOKS
const
#endif
PfnDliHook   __pfnDliFailureHook2;


It would appear we need to define DELAYIMP_INSECURE_WRITABLE_HOOKS. Is there another way to set the hook to NULL

Dave Cramer

Re: Errors building on windows

От
"Inoue, Hiroshi"
Дата:
Hi Dave,

Thanks for the report.
I would fix it.

regards,
Hiroshi Inoue

On 2016/07/20 0:43, Dave Cramer wrote:
> I am getting the following errors:
>
> loadlib.c(114): error C2373: '__pfnDliFailureHook2': redefinition;
> different type modifiers
> C:\Program Files (x86)\Microsoft Visual Studio
> 14.0\VC\INCLUDE\delayimp.h(141): note: see declaration of '__pfnDliFailur
> eHook2'
> loadlib.c(115): error C2373: '__pfnDliNotifyHook2': redefinition;
> different type modifiers
> C:\Program Files (x86)\Microsoft Visual Studio
> 14.0\VC\INCLUDE\delayimp.h(134): note: see declaration of '__pfnDliNotify
> Hook2'
> loadlib.c(129): error C2166: l-value specifies const object
> loadlib.c(190): error C2166: l-value specifies const object
> loadlib.c(198): error C2166: l-value specifies const object
> loadlib.c(229): error C2166: l-value specifies const object
> loadlib.c(237): error C2166: l-value specifies const object
>
> Which appear to be from:
>
> // Prior to Visual Studio 2015 Update 3, these hooks were non-const.
> They were
> // made const to improve security (global, writable function pointers
> are bad).
> // If for backwards compatibility you require the hooks to be
> writable, define
> // the macro DELAYIMP_INSECURE_WRITABLE_HOOKS prior to including this
> header and
> // provide your own non-const definition of the hooks.
> ExternC
> #ifndef DELAYIMP_INSECURE_WRITABLE_HOOKS
> const
> #endif
> PfnDliHook   __pfnDliNotifyHook2;
>
> // This is the failure hook, dliNotify = {dliFailLoadLib|dliFailGetProc}
> ExternC
> #ifndef DELAYIMP_INSECURE_WRITABLE_HOOKS
> const
> #endif
> PfnDliHook   __pfnDliFailureHook2;
>
>
> It would appear we need to define DELAYIMP_INSECURE_WRITABLE_HOOKS. Is
> there another way to set the hook to NULL
>
> Dave Cramer