- 
    Problem report 
- 
    Resolution: Fixed
- 
    Trivial 
- 
    None
- 
        Sprint 53 (Jun 2019), Sprint 54 (Jul 2019)
- 
        0.5
There are various issues when trying to build Zabbix agent with Visual Studion 2019 build tools:
 1) For 32 bit systems PROCESSOR_ARCHITECTURE is now x86 rather than i386, this seems easy to fix it:
diff --git a/build/win32/project/Makefile_agent b/build/win32/project/Makefile_agent index 495661eb9b..ea6c6f54c5 100644 --- a/build/win32/project/Makefile_agent +++ b/build/win32/project/Makefile_agent @@ -3,10 +3,9 @@ CPU=$(PROCESSOR_ARCHITECTURE) !ENDIF -!IF "$(CPU)" == "i386" +!IF "$(CPU)" == "i386" || "$(CPU)" == "x86" TARGETDIR = ..\..\..\bin\win32 ADD_LFLAGS = /MACHINE:X86 - !ELSEIF "$(CPU)" == "AMD64" TARGETDIR = ..\..\..\bin\win64 ADD_LFLAGS = /MACHINE:X64
2) Conflicts between structures that were defined to support some features on older systems and the new build environment:
Microsoft (R) Program Maintenance Utility Version 14.21.27702.2
Copyright (C) Microsoft Corporation.  All rights reserved.
        cl.exe ..\..\..\src\zabbix_agent\logfiles.c /Fo"..\..\..\src\zabbix_agent\logfiles.o" /I ..\..\..\src\zabbix_agent /I .\ /I ..\include /I ..\..\..\incl
de"  /D WITH_AGENT_METRICS /D WITH_COMMON_METRICS  /D WITH_SPECIFIC_METRICS /D WITH_HOSTNAME_METRIC /D WITH_SIMPLE_METRICS  /Zi /D DEFAULT_CONFIG_FILE="\"C:\\z
 /Fdzabbix_agentd.exe.pdb  /nologo /O2 /Ob1 /GF /FD /EHsc /MT /Gy /W3 /c /D _WINDOWS /D _CONSOLE /D UNICODE  /D _UNICODE /D HAVE_WINLDAP_H /D HAVE_ASSERT_H /D
C80_UPGRADE=0x0600" /D HAVE_IPV6 /TC /DPCRE_STATIC
logfiles.c
G:\feature\ZBX-15827-4.2\include\symbols.h(29): error C2365: 'FileIdInfo': redefinition; previous definition was 'enumerator'
C:\Program Files\Windows Kits\8.1\include\um\minwinbase.h(190): note: see declaration of 'FileIdInfo'
G:\feature\ZBX-15827-4.2\include\symbols.h(29): error C2086: 'FileIdInfo': redefinition
G:\feature\ZBX-15827-4.2\include\symbols.h(28): note: see declaration of 'FileIdInfo'
G:\feature\ZBX-15827-4.2\include\symbols.h(41): error C2371: 'FILE_ID_INFO': redefinition; different basic types
C:\Program Files\Windows Kits\8.1\include\um\winbase.h(8342): note: see declaration of 'FILE_ID_INFO'
..\..\..\src\zabbix_agent\logfiles.c(349): error C2039: 'LowPart': is not a member of '_FILE_ID_128'
C:\Program Files\Windows Kits\8.1\include\um\winnt.h(12321): note: see declaration of '_FILE_ID_128'
..\..\..\src\zabbix_agent\logfiles.c(350): error C2039: 'HighPart': is not a member of '_FILE_ID_128'
C:\Program Files\Windows Kits\8.1\include\um\winnt.h(12321): note: see declaration of '_FILE_ID_128'
Here solution could be to prefix the redefined structures, enums with ZBX/Zbx. That way there will be no conflicts and GetFileInformationByHandleEx is loaded dynamically, so there will be no errors as long as the structure compatibility is kept.