-
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.