EPICS Home

Experimental Physics and Industrial Control System


 
2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Problem building ezcaIDL on Windows
From: Mark Rivers via Core-talk <core-talk at aps.anl.gov>
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: EPICS core-talk <core-talk at aps.anl.gov>
Date: Fri, 11 Jun 2021 14:49:33 +0000

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

 

 

From: Core-talk <core-talk-bounces at aps.anl.gov> On Behalf Of Mark Rivers via Core-talk
Sent: Friday, June 11, 2021 9:37 AM
To: EPICS core-talk <core-talk at aps.anl.gov>
Subject: Problem building ezcaIDL on Windows

 

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

 

 


Replies:
RE: Problem building ezcaIDL on Windows Mark Rivers via Core-talk
References:
Problem building ezcaIDL on Windows Mark Rivers via Core-talk

Navigate by Date:
Prev: Problem building ezcaIDL on Windows Mark Rivers via Core-talk
Next: RE: Problem building ezcaIDL on Windows Mark Rivers via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024 
Navigate by Thread:
Prev: Problem building ezcaIDL on Windows Mark Rivers via Core-talk
Next: RE: Problem building ezcaIDL on Windows Mark Rivers via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  <20212022  2023  2024