I have made some progress. I changed the Makefile as follows:
******************************
diff --git a/Makefile b/Makefile
index cc33f71..4f85930 100644
--- a/Makefile
+++ b/Makefile
@@ -18,11 +18,13 @@ SCRIPTS_HOST = ezcaIDL.pro ezcaIDLWidgets.pro
SHARED_LIBRARIES=YES
LOADABLE_LIBRARY_HOST_Darwin = ezcaIDL
+STATIC_BUILD=YES
LIBRARY_HOST_DEFAULT = ezcaIDL
LIBRARY_HOST_Darwin = -nil-
ezcaIDL_LDFLAGS_WIN32 += /manifest
ezcaIDL_SRCS = ezcaIDL.c
ezcaIDL_LIBS += ezca EzcaScan ca Com
-ezcaIDL_SYS_LIBS_WIN32 = ws2_32 advapi32 user32
+ezcaIDL_SYS_LIBS_WIN32 = ws2_32 advapi32 user32 msvcrt
+USR_LDFLAGS_WIN32 += /nodefaultlib:libcmt
******************************
STATIC_BUILD=YES was required to get the linker to use the statically built libraries for ezca and EzcaScan.
I needed to add msvcrt to SYS_LIBS_WIN32, otherwise it gave an error that functions from the C run-time were undefined.
I needed to add the nodefaultlib to prevent a warning the libcmt was not compatible.
Perhaps there is a better solution to the above 2 problems.
Once I made those changes then I still get warnings like this:
ezcaIDL.obj : warning LNK4197: export 'EzcaMonitorQueue_Zero' specified multiple times; using first specification
but it builds OK. It is exporting the undecorated symbols, as I want. The DLL does not depend on ezca.dll or EzcaScan.dll, as I want. However, it does depend on Com.dll
and ca.dll, which I do not want.
I then tried a different approach. I used the windows-x64-static architecture, rather than windows-x64. I was able to revert to the original Makefile. Although it is
the static architecture, the Makefile defines SHARED_LIBRARIES=YES so it will build the DLL. I still get the warnings about exports defined multiple times. I then get this error:
link -nologo -subsystem:windows -dll -incremental:no -opt:ref -release -MACHINE:X64 /manifest -out:ezcaIDL.dll -implib:ezcaIDL.lib -def:../ezcaIDL.def ezcaIDL.obj ../../../lib/windows-x64-static/ezca.lib
../../../lib/windows-x64-static/EzcaScan.lib ../../../../base/lib/windows-x64-static/ca.lib ../../../../base/lib/windows-x64-static/Com.lib ws2_32.lib advapi32.lib user32.lib
…
Creating library ezcaIDL.lib and object ezcaIDL.exp
Com.lib(osdFindAddr.obj) : error LNK2019: unresolved external symbol __imp_SymSetOptions referenced in function epicsFindAddr
Com.lib(osdFindAddr.obj) : error LNK2019: unresolved external symbol __imp_SymGetLineFromAddr64 referenced in function epicsFindAddr
Com.lib(osdFindAddr.obj) : error LNK2019: unresolved external symbol __imp_SymInitialize referenced in function epicsFindAddr
Com.lib(osdFindAddr.obj) : error LNK2019: unresolved external symbol __imp_SymFromAddr referenced in function epicsFindAddr
ezcaIDL.dll : fatal error LNK1120: 4 unresolved externals
make[1]: *** [../../../../base/configure/RULES_BUILD:298: ezcaIDL.dll] Error 1120
make[1]: Leaving directory 'H:/epics/extensions_new/src/ezcaIDL/O.windows-x64-static'
make: *** [../../../base/configure/RULES_ARCHS:58: install.windows-x64-static] Error 2
Is there a way around that error?
Thanks,
Mark
From: Mark Rivers
Sent: Friday, June 11, 2021 9:50 AM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: EPICS core-talk <core-talk at aps.anl.gov>
Subject: RE: Problem building ezcaIDL on Windows
Note that the existing version of the DLL am using was built in 2013, so it is definitely built with old versions of base and Visual Studio.
This is the output of dumpbin/exports, which shows that the DLL is exporting undecorated symbols, which is what I need.
H:\epics\extensions\bin\windows-x64>dumpbin /exports ezcaIDL.dll
Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file ezcaIDL.dll
File Type: DLL
Section contains the following exports for ezcaIDL.dll
00000000 characteristics
5151CC01 time date stamp Tue Mar 26 11:25:37 2013
0.00 version
1 ordinal base
53 number of functions
53 number of names
ordinal hint RVA name
1 0 00060A80 EzcaAddMonitorArray
2 1 00060790 EzcaCheckMonitorArray
3 2 00060910 EzcaClearMonitorArray
4 3 0005FFC0 EzcaDebug
5 4 00060DA0 EzcaGetArrayEventValues
6 5 00060E20 EzcaGetArrayTypeCount
7 6 00060EE0 EzcaGetArrayValues
8 7 00060FB0 EzcaGetError
9 8 00060850 EzcaGetMonitorArray
10 9 00060290 EzcaInit
11 A 000600F0 EzcaMonitorQueue_Add
12 B 00060090 EzcaMonitorQueue_Clear
13 C 00060160 EzcaMonitorQueue_Get
14 D 00060030 EzcaMonitorQueue_Zero
15 E 00061160 EzcaMonitorScan_Add
16 F 00060BA0 EzcaMonitorScan_Clear
17 10 00060B70 EzcaMonitorScan_Get
18 11 00060B10 EzcaMonitorScan_Zero
19 12 00060260 EzcaPendEvent
20 13 00060C00 EzcaPutArrayEventValues
21 14 00060CD0 EzcaPutArrayValues
22 15 00060190 EzcaSearchList
23 16 0005FFA0 EzcaSetPendTime
24 17 000610C0 EzcaTimeStamp
25 18 00060000 EzcaVersion
26 19 000602C0 ezcaIDLAutoErrorMessageOff
27 1A 000602E0 ezcaIDLAutoErrorMessageOn
28 1B 000610E0 ezcaIDLClearMonitor
29 1C 00060340 ezcaIDLDebugOff
30 1D 00060360 ezcaIDLDebugOn
31 1E 00060380 ezcaIDLEndGroup
32 1F 000604B0 ezcaIDLEndGroupWithReport
33 20 00060760 ezcaIDLGet
34 21 00061140 ezcaIDLGetControlLimits
35 22 000605C0 ezcaIDLGetCountAndType
36 23 000603A0 ezcaIDLGetEnumStrings
37 24 00060680 ezcaIDLGetErrorString
38 25 00061120 ezcaIDLGetGraphicLimits
39 26 00060740 ezcaIDLGetPrecision
40 27 00060530 ezcaIDLGetRetryCount
41 28 00060720 ezcaIDLGetStatus
42 29 00060550 ezcaIDLGetTimeout
43 2A 00060700 ezcaIDLGetUnits
44 2B 000605A0 ezcaIDLNewMonitorValue
45 2C 000606E0 ezcaIDLPerror
46 2D 00060650 ezcaIDLPut
47 2E 00060620 ezcaIDLPutOldCa
48 2F 00061100 ezcaIDLSetMonitor
49 30 00060570 ezcaIDLSetRetryCount
50 31 00060580 ezcaIDLSetTimeout
51 32 00060390 ezcaIDLStartGroup
52 33 00060300 ezcaIDLTraceOff
53 34 00060320 ezcaIDLTraceOn
Summary
17000 .data
8000 .pdata
22000 .rdata
2000 .reloc
1000 .rsrc
6E000 .text
This is the output of dumpbin /imports, which shows that although the DLL uses the Com and ca libraries, they are statically linked into the DLL, there is no dependency
of the DLL on Com.dll or ca.dll. That is what I want, so I can easily distribute the DLL without any dependencies.
H:\epics\extensions\bin\windows-x64>dumpbin /imports ezcaIDL.dll
Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file ezcaIDL.dll
File Type: DLL
Section contains the following imports:
WS2_32.dll
18006F390 Import Address Table
18008FFA0 Import Name Table
0 time date stamp
0 Index of first forwarder reference
36 WSAIoctl
Ordinal 115
Ordinal 116
Ordinal 23
Ordinal 3
Ordinal 51
Ordinal 52
Ordinal 14
Ordinal 57
Ordinal 4
Ordinal 111
Ordinal 22
Ordinal 21
Ordinal 16
Ordinal 19
Ordinal 7
Ordinal 15
Ordinal 10
Ordinal 17
Ordinal 8
Ordinal 9
Ordinal 6
Ordinal 20
Ordinal 2
ADVAPI32.dll
18006F000 Import Address Table
18008FC10 Import Name Table
0 time date stamp
0 Index of first forwarder reference
15E GetUserNameA
USER32.dll
18006F380 Import Address Table
18008FF90 Import Name Table
0 time date stamp
0 Index of first forwarder reference
1FC MessageBoxA
KERNEL32.dll
18006F010 Import Address Table
18008FC20 Import Name Table
0 time date stamp
0 Index of first forwarder reference
79 CreateFileA
3D5 SetEnvironmentVariableA
55 CompareStringW
52 CompareStringA
400 SetStdHandle
19A GetConsoleOutputCP
486 WriteConsoleA
240 GetStringTypeW
362 ReadFile
3E4 SetFilePointer
1E8 GetLocaleInfoA
2A4 HeapReAlloc
2DD LCMapStringW
314 MultiByteToWideChar
2DB LCMapStringA
142 FlushFileBuffers
196 GetConsoleMode
184 GetConsoleCP
2A6 HeapSize
23D GetStringTypeA
1F9 GetModuleHandleW
354 RaiseException
2D5 IsValidCodePage
468 WaitForSingleObject
3D8 SetEvent
73 CreateEventA
43 CloseHandle
438 TlsGetValue
1AA GetCurrentProcess
1AD GetCurrentThread
2B4 InitializeCriticalSection
439 TlsSetValue
215 GetPriorityClass
425 Sleep
24E GetSystemTimeAdjustment
2E9 LeaveCriticalSection
40F SetThreadPriority
DA EnterCriticalSection
1C7 GetExitCodeThread
261 GetThreadPriority
BF DeleteCriticalSection
1AE GetCurrentThreadId
D5 DuplicateHandle
436 TlsAlloc
437 TlsFree
42B SuspendThread
387 ResumeThread
148 FormatMessageA
95 CreateProcessA
239 GetStartupInfoA
1E6 GetLastError
2F7 LocalFree
8C CreateMutexA
371 ReleaseMutex
275 GetVersionExA
42F SystemTimeToTzSpecificLocalTime
42E SystemTimeToFileTime
51 CompareFileTime
34E QueryPerformanceCounter
24F GetSystemTimeAsFileTime
111 FileTimeToSystemTime
26B GetTimeZoneInformation
34F QueryPerformanceFrequency
140 FlsSetValue
170 GetCommandLineA
2A1 HeapFree
29D HeapAlloc
220 GetProcAddress
105 ExitProcess
442 UnhandledExceptionFilter
419 SetUnhandledExceptionFilter
389 RtlCaptureContext
490 WriteConsoleW
1D8 GetFileType
23B GetStdHandle
106 ExitThread
A3 CreateThread
1AF GetDateFormatA
268 GetTimeFormatA
392 RtlPcToFileHeader
431 TerminateProcess
2CB IsDebuggerPresent
397 RtlVirtualUnwind
390 RtlLookupFunctionEntry
396 RtlUnwindEx
D6 EncodePointer
B8 DecodePointer
13F FlsGetValue
13E FlsFree
3F0 SetLastError
13D FlsAlloc
3EC SetHandleCount
1F4 GetModuleFileNameA
14B FreeEnvironmentStringsA
1C0 GetEnvironmentStrings
14C FreeEnvironmentStringsW
47E WideCharToMultiByte
1C2 GetEnvironmentStringsW
2A5 HeapSetInformation
29F HeapCreate
2A0 HeapDestroy
266 GetTickCount
1AB GetCurrentProcessId
491 WriteFile
2EB LoadLibraryA
2B5 InitializeCriticalSectionAndSpinCount
15C GetCPInfo
153 GetACP
213 GetOEMCP
Summary
17000 .data
8000 .pdata
22000 .rdata
2000 .reloc
1000 .rsrc
6E000 .text
Thanks,
Mark
I am trying to build the master branch of
https://github.com/epics-extensions/ezcaIDL on windows-x64 with base 7.0.4 and VS 2015. This used to build OK, either on an earlier version of base or VS or both.
This extension builds a shareable library/DLL to call Channel Access from IDL. It depends on extensions/ezca and extensions/EzcaScan. Both of those libraries build fine on Windows.
ezcaIDL builds fine on Linux. However, on Windows I get this:
H:\epics\extensions\src\ezcaIDL>make
make -C O.windows-x64 -f ../Makefile TOP=../../.. \
T_A=windows-x64 install
make[1]: Entering directory 'H:/epics/extensions/src/ezcaIDL/O.windows-x64'
link -nologo -subsystem:windows -dll -LTCG -incremental:no -opt:ref -release -MACHINE:X64 /manifest -out:ezcaIDL.dll -implib:ezcaIDL.lib -def:../ezcaIDL.def ezcaIDL.obj ../../../lib/windows-x64/ezca.lib ../../../lib/windows-x64/EzcaScan.lib
../../../../base/lib/windows-x64/ca.lib ../../../../base/lib/windows-x64/Com.lib ws2_32.lib advapi32.lib user32.lib
ezcaIDL.obj : warning LNK4197: export 'EzcaMonitorQueue_Zero' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaMonitorQueue_Clear' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaMonitorQueue_Add' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaMonitorQueue_Get' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaCheckMonitorArray' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaGetMonitorArray' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaClearMonitorArray' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaAddMonitorArray' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaMonitorScan_Zero' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaMonitorScan_Get' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaMonitorScan_Clear' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaMonitorScan_Add' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaPutArrayEventValues' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaPutArrayValues' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaGetArrayEventValues' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaGetArrayTypeCount' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaGetArrayValues' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaGetError' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaSearchList' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaTimeStamp' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaSetPendTime' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaPendEvent' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaInit' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaDebug' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'EzcaVersion' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLAutoErrorMessageOff' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLAutoErrorMessageOn' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLTraceOff' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLTraceOn' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLDebugOff' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLDebugOn' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLEndGroup' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLStartGroup' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetEnumStrings' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLEndGroupWithReport' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetRetryCount' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetTimeout' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLSetRetryCount' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLSetTimeout' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLNewMonitorValue' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLClearMonitor' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLSetMonitor' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetCountAndType' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLPutOldCa' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLPut' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetErrorString' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLPerror' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetUnits' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetStatus' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetPrecision' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetGraphicLimits' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGetControlLimits' specified multiple times; using first specification
ezcaIDL.obj : warning LNK4197: export 'ezcaIDLGet' specified multiple times; using first specification
Creating library ezcaIDL.lib and object ezcaIDL.exp
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_search_list
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_getArrayEvent
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaTraceOn
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaGetTimeout
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaTraceOff
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_getTypeCount
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaNewMonitorValue
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaSetRetryCount
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaSetMonitor
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaDebugOff
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaEndGroup
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaEndGroupWithReport
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_version
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaGetPrecision
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_scanClearMonitor
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_scanZeroMonitor
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_monitorArrayCheck
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaPut
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_debug
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaPutOldCa
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaGetRetryCount
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaPvToChid
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaDebugOn
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_get_error_array
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaGetGraphicLimits
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaGetStatus
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaGetControlLimits
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_queueClear
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaAutoErrorMessageOn
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_queueGet
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_scanGetMonitor
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_putArray
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaGetErrorString
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_scanAdd
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_setPendTime
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaSetTimeout
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaFree
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_CA
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaClearMonitor
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaAutoErrorMessageOff
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_timeStamp
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_monitorArrayGet
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_getArray
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaGet
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_monitorArrayAdd
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_queueAdd
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaStartGroup
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_monitorArrayClear
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_queueZero
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_putArrayEvent
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaGetUnits
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_Ezca_init
ezcaIDL.obj : error LNK2001: unresolved external symbol __imp_ezcaPerror
ezcaIDL.dll : fatal error LNK1120: 53 unresolved externals
make[1]: *** [../../../../base/configure/RULES_BUILD:298: ezcaIDL.dll] Error 1120
make[1]: Leaving directory 'H:/epics/extensions/src/ezcaIDL/O.windows-x64'
make: *** [../../../base/configure/RULES_ARCHS:58: install.windows-x64] Error 2
Note that it uses a .DEF file to define what symbols should be exported.
Has support for that changed? If so, how do I need to do it now?
Thanks,
Mark