areaDetector / ADPICam

areaDetector driver for Princeton Instruments cameras using the PICam library
https://areadetector.github.io/areaDetector/ADPICam/PICamDoc.html
3 stars 4 forks source link

Fix "not a member" errors when building on win10 with vs2019 #9

Closed jwlodek closed 3 years ago

jwlodek commented 3 years ago

I was building ADPICam on windows 10 with vs2019 and got the below errors:

C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(1336): note: consider using '%lld' in the format string
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(1336): note: consider using '%Id' in the format string
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(1336): note: consider using '%I64d' in the format string
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2218): error C2039: 'out_of_range': is not a member of 'std'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include\unordered_map(24): note: see declaration of 'std'
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2218): error C2061: syntax error: identifier 'out_of_range'
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2218): error C2310: catch handlers must specify one type
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2241): error C2039: 'out_of_range': is not a member of 'std'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include\unordered_map(24): note: see declaration of 'std'
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2241): error C2061: syntax error: identifier 'out_of_range'
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2241): error C2310: catch handlers must specify one type
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2404): warning C4477: 'sprintf' : format string '%d' requires an argument of type 'int', but variadic argument 1 has
 type 'pi64s'
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2404): note: consider using '%lld' in the format string
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2404): note: consider using '%Id' in the format string
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(2404): note: consider using '%I64d' in the format string
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(3328): error C2039: 'out_of_range': is not a member of 'std'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include\unordered_map(24): note: see declaration of 'std'
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(3328): error C2061: syntax error: identifier 'out_of_range'
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(3328): error C2310: catch handlers must specify one type
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(3355): error C2039: 'out_of_range': is not a member of 'std'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include\unordered_map(24): note: see declaration of 'std'
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(3355): error C2061: syntax error: identifier 'out_of_range'
C:\epics\utils\installSynApps\picam-test\support\areaDetector\ADPICam\PICamApp\src\ADPICam.cpp(3355): error C2310: catch handlers must specify one type
make[3]: *** [C:/epics/utils/installSynApps/picam-test/base/configure/RULES_BUILD:263: ADPICam.obj] Error 2
make[2]: *** [C:/epics/utils/installSynApps/picam-test/base/configure/RULES_ARCHS:58: install.windows-x64-static] Error 2
make[1]: *** [C:/epics/utils/installSynApps/picam-test/base/configure/RULES_DIRS:85: src.install] Error 2
make: *** [C:/epics/utils/installSynApps/picam-test/base/configure/RULES_DIRS:85: PICamApp.install] Error 22218

The solution was to simply add

#include <stdexcept>

to the source file, and now the build completes successfully.