That solved the problem. Thank you Mark.
-Ji
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-----
From: [email protected] <[email protected]> On Behalf Of Li, Ji
Sent: Tuesday, August 28, 2018 12:19 PM
To: [email protected]
Subject: Macro definitions for compiling areaDetector R3.3.2
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