1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: Macro definitions for compiling areaDetector R3.3.2 |
From: | "Li, Ji" <[email protected]> |
To: | Mark Rivers <[email protected]>, "[email protected]" <[email protected]> |
Date: | Tue, 28 Aug 2018 20:45:25 +0000 |
That solved the problem. Thank you Mark. -Ji From: Mark Rivers <[email protected]> Hi Ji Li, I'm compiling areaDetector R3.3.2 on a Windows 10 machine. Macros (EPICS_BASE, ADCORE, ...) are defined at areaDetector level (e.g., EPICS_BASE in areaDetector-R3-3-2\configure\RELEASE_SUPPORT.local, ADCORE in
areaDetector-R3-3-2\configure\RELEASE_LIBS.local) as instructed. Did you also define everything in RELEASE_PRODS.local, based on EXAMPLE_RELEASE_PRODS.local? It looks like the problem is that ADCORE is not defined in RELEASE_PRODS.local. I change $(ADCORE) to the full path to ADCore, and the error disappeared. But new errors appeared: Where did you change that? In NDDriverStdArraysApp\src\Makefile? If so, that is not correct. ADCORE should be defined in areaDetector\configure\ RELEASE_PRODS.local. link -nologo -incremental:no -opt:ref -release -MACHINE:X64 -out:NDDriverStdArraysApp.exe NDDriverStdArraysApp_registerRecordDeviceDriver.obj NDDriverStdArraysAppMain.obj ../../../../../lib/windows-x64-static/NDDriverStdArrays.lib
ws2_32.lib advapi32.lib user32.lib kernel32.lib winmm.lib NDDriverStdArraysApp_registerRecordDeviceDriver.obj : error LNK2019: unresolved external symbol iocshRegister referenced in function "int __cdecl Registration(void)" (?Registration@@YAHXZ) NDDriverStdArrays.lib(NDDriverStdArrays.obj) : error LNK2001: unresolved external symbol iocshRegister NDDriverStdArraysApp_registerRecordDeviceDriver.obj : error LNK2019: unresolved external symbol iocshRegisterCommon
referenced in function "int __cdecl Registration(void)" (?Registration@@YAHXZ) NDDriverStdArraysApp_registerRecordDeviceDriver.obj : error LNK2019: unresolved external symbol iocshPpdbbase referenced in function rrddCallFunc ... If you look at the link command you will see that it is not linking with lots of needed libraries, like EPICS base, asyn, etc. I suspect your problem is in RELEASE_PRODS.local. Mark -----Original Message----- Hi All, I'm compiling areaDetector R3.3.2 on a Windows 10 machine. Macros (EPICS_BASE, ADCORE, ...) are defined at areaDetector level (e.g., EPICS_BASE in areaDetector-R3-3-2\configure\RELEASE_SUPPORT.local, ADCORE in areaDetector-R3-3-2\configure\RELEASE_LIBS.local)
as instructed. When compiling modules, it looks these definitions are removed as the compiler complains unable to find some files. For example, when compiling NDDriverStdArrays: ========================================= ... make -C ./src install make[5]: Entering directory 'C:/EPICS/synApps-6-0/support/areaDetector-R3-3-2/NDDriverStdArrays/iocs/NDDriverStdArraysIOC/NDDriverStdArraysApp/src' Makefile:27: /ADApp/commonDriverMakefile: No such file or directory make[5]: *** No rule to make target '/ADApp/commonDriverMakefile'. Stop. ... ========================================= In areaDetector-R3-3-2\NDDriverStdArrays\iocs\NDDriverStdArraysIOC\NDDriverStdArraysApp\src\Makefile, the file was included as: ========================================= include $(ADCORE)/ADApp/commonDriverMakefile ========================================= I change $(ADCORE) to the full path to ADCore, and the error disappeared. But new errors appeared: ========================================= ... make[6]: Entering directory 'C:/EPICS/synApps-6-0/support/areaDetector-R3-3-2/NDDriverStdArrays/iocs/NDDriverStdArraysIOC/NDDriverStdArraysApp/src/O.windows-x64-static' Creating dbd file NDDriverStdArraysApp.dbd perl -CSD C:/EPICS/base-7.0.1.1/bin/windows-x64-static/dbdExpand.pl -I. -I.. -I../O.Common -I../../../dbd -I../../../../../dbd -IC:/EPICS/base-7.0.1.1/dbd -o NDDriverStdArraysApp.dbd NDDriverStdArraysSupport.dbd perl -CSD C:/EPICS/base-7.0.1.1/bin/windows-x64-static/registerRecordDeviceDriver.pl -I. -I.. -I../O.Common -I../../../dbd -I../../../../../dbd -IC:/EPICS/base-7.0.1.1/dbd -o NDDriverStdArraysApp_registerRecordDeviceDriver.cpp ../O.Common/NDDriverStdArraysApp.dbd
NDDriverStdArraysApp_registerRecordDeviceDriver C:/EPICS/synApps-6-0/support/areaDetector-R3-3-2/NDDriverStdArrays/iocs/NDDriverStdArraysIOC perl -CSD C:/EPICS/base-7.0.1.1/bin/windows-x64-static/mkmf.pl -m NDDriverStdArraysApp_registerRecordDeviceDriver.d -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/msvc -I../../../include/os/WIN32 -I../../../include -I../../../../../include
-IC:/EPICS/base-7.0.1.1/include/compiler/msvc -IC:/EPICS/base-7.0.1.1/include/os/WIN32 -IC:/EPICS/base-7.0.1.1/include NDDriverStdArraysApp_registerRecordDeviceDriver.obj NDDriverStdArraysApp_registerRecordDeviceDriver.cpp Installing created dbd file ../../../dbd/NDDriverStdArraysApp.dbd cl -EHsc -GR -nologo -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -Oy- -W3 -w44355 -w44344 -w44251 -MT -TP -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/msvc -I../../../include/os/WIN32
-I../../../include -I../../../../../include -IC:/EPICS/base-7.0.1.1/include/compiler/msvc -IC:/EPICS/base-7.0.1.1/include/os/WIN32 -IC:/EPICS/base-7.0.1.1/include -c NDDriverStdArraysApp_registerRecordDeviceDriver.cpp NDDriverStdArraysApp_registerRecordDeviceDriver.cpp link -nologo -incremental:no -opt:ref -release -MACHINE:X64 -out:NDDriverStdArraysApp.exe NDDriverStdArraysApp_registerRecordDeviceDriver.obj NDDriverStdArraysAppMain.obj ../../../../../lib/windows-x64-static/NDDriverStdArrays.lib
ws2_32.lib advapi32.lib user32.lib kernel32.lib winmm.lib NDDriverStdArraysApp_registerRecordDeviceDriver.obj : error LNK2019: unresolved external symbol iocshRegister referenced in function "int __cdecl Registration(void)" (?Registration@@YAHXZ) NDDriverStdArrays.lib(NDDriverStdArrays.obj) : error LNK2001: unresolved external symbol iocshRegister NDDriverStdArraysApp_registerRecordDeviceDriver.obj : error LNK2019: unresolved external symbol iocshRegisterCommon referenced in
function "int __cdecl Registration(void)" (?Registration@@YAHXZ) NDDriverStdArraysApp_registerRecordDeviceDriver.obj : error LNK2019: unresolved external symbol iocshPpdbbase referenced in function rrddCallFunc ... ========================================= I removed NDDriverStdArrays from the compiling list in the areaDetector-R3-3-2\configure\RELEASE.local and then same errors occurred when compiling another module (pvaDriver). I don't think it the right way to find all the definitions that cause such errors and change them manually. Did I missed some configurations? Thanks. -Ji Li |