Skip to content

ADSupport does not generate correct static mingw libs for GraphicsMagick #18

Description

@Engbretson

If one wishes to use the NDFileMagick plugin with at least mingw x64, certain library references are unresolved.
/mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x2a1): undefined reference to __imp__ZN6Magick5ImageC1Ev' /mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x3ba): undefined reference to __imp__ZN6Magick5Image4typeEN9MagickLib9ImageTypeE'
/mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x3ed): undefined reference to __imp__ZN6Magick5Image4readEjjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9MagickLib11StorageTypeEPKv' /mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x405): undefined reference to __imp__ZN6Magick5Image7channelEN9MagickLib11ChannelTypeE'
/mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x412): undefined reference to __imp__ZN6Magick5Image7qualityEj' /mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x41f): undefined reference to __imp__ZN6Magick5Image5depthEj'
/mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x42a): undefined reference to __imp__ZN6Magick5Image12compressTypeEN9MagickLib15CompressionTypeE' /mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x48c): undefined reference to __imp__ZN6Magick5Image5writeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE'
/mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x4ad): undefined reference to __imp__ZN6Magick5ImageD1Ev' /mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x5d1): undefined reference to __imp__ZN6Magick5ImageD1Ev'
/mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x726): undefined reference to __imp__ZN6Magick5ImageC1Ev' /mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x7a1): undefined reference to __imp__ZN6Magick16InitializeMagickEPKc'
/mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text+0x7fc): undefined reference to __imp__ZN6Magick5ImageD1Ev' /mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text$_ZN12NDFileMagickD1Ev[_ZN12NDFileMagickD1Ev]+0x2e): undefined reference to __imp__ZN6Magick5ImageD1Ev'
/mnt/c/epics71/areaDetector-3-2/ADCore-3-2/lib/windows-x64-mingw/NDPlugin.lib(NDFileMagick.o):NDFileMagick.cpp:(.text$_ZN12NDFileMagickD0Ev[_ZN12NDFileMagickD0Ev]+0x2e): undefined reference to `__imp__ZN6Magick5ImageD1Ev'
collect2: error: ld returned 1 exit status
This is due to the include.h file in the Magick++ directory being

#if (defined(WIN32) || defined(WIN64)) && !defined (CYGWIN) //&& !defined(MINGW32)

So by default all flavors of mingw get

MagickDLLDecl __declspec(dllexport)

Even when your building static libraries

Making this change seems to work for me, but only tested with the x64 version of mingw

#if (defined(WIN32) || defined(WIN64)) && !defined (CYGWIN) && !defined(MINGW32) && !defined(MINGW64)

Not tested to see what happens if shared libraries are actually required,

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions