Changes to jmorecfg.h to make Windows DLL (MinGW)

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Changes to jmorecfg.h to make Windows DLL (MinGW)

KarlBlau
Hi,

I have problems linking VTK-5.0 with MinGW as shared libraries.

At linking time I get:
  Linking CXX shared library ../bin/libvtkRendering.dll
  Info: resolving vtable for vtkPropCollectionby linking to __imp___ZTV17vtkPropCollection (auto-import)
  Info: resolving vtable for vtkSimpleCriticalSectionby linking to __imp___ZTV24vtkSimpleCriticalSection (auto-import)
  Info: resolving vtable for vtkMapper2Dby linking to __imp___ZTV11vtkMapper2D (auto-import)
  CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text+0x1d0d):vtkTesting.cxx: undefined reference to `vtkPNGWriter::New()'
  CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text+0x2b7b):vtkTesting.cxx: undefined reference to `vtkJPEGWriter::New()'
  CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text$_ZN15vtkSmartPointerI12vtkPNGReaderE3NewEv[vtkSmartPointer<vtkPNGReader>::New()]+0xb):vtkTesting.cxx: undefined reference to `vtkPNGReader::New()'
  collect2: ld returned 1 exit status
  make[2]: *** [bin/libvtkRendering.dll] Error 1
  make[1]: *** [Rendering/CMakeFiles/vtkRendering.dir/all] Error 2
  make: *** [all] Error 2

Does anyone have experience with that?

I guess that in jmorecfg.h (part of Utilities/vtkjpeg) changes need to be done. Also in pngconf.h (part of Utilities/vtkpng).
Vincent Nicolas helped me with a similar problem: it was due to dll export/import directives. These made problems with gcc as a linker. Therefore changes were made so that no symbols exports were declared. This worked in the case of the 'Common'-part of VTK.


Regards,

MB
______________________________________________________________
Verschicken Sie romantische, coole und witzige Bilder per SMS!
Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193

_______________________________________________
This is the private VTK discussion list.
Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.vtk.org/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|

Re: Changes to jmorecfg.h to make Windows DLL (MinGW)

KarlBlau
I did some changes to the source: removed all __declspec(dllimport) and
__declspec(dllexport) parts of the makros.
libvtkjpeg.dll is linked without error messages.

Now, I get the following error when libvtktiff.dll is being linked:
   ... tif_jpeg.c: undefined reference to `_imp__vtk_jpeg_abort´
   ... tif_jpeg.c: undefined reference to `_imp__vtk_jped_std_error´
   ... and a lot more ...

when I look at the symbols of libvtkjpeg.dll I see (->nm libvtkjpeg.dll):
   100240bc I _vtk_jpeg_abort
   10001717 T _vtk_jpeg_std_error
   ... and a lot more ...

To me this seems as if the symbol names are wrong: only the '_imp_' is
to much!

How can I make the the compiler / linker give the functions the correct
names?
Or make the linker use the wrong names?
Or can I change the symbol names without creating new dll files?


Regards, Martin




I

Martin Baumann schrieb:

>Hi,
>
>I have problems linking VTK-5.0 with MinGW as shared libraries.
>
>At linking time I get:
>  Linking CXX shared library ../bin/libvtkRendering.dll
>  Info: resolving vtable for vtkPropCollectionby linking to __imp___ZTV17vtkPropCollection (auto-import)
>  Info: resolving vtable for vtkSimpleCriticalSectionby linking to __imp___ZTV24vtkSimpleCriticalSection (auto-import)
>  Info: resolving vtable for vtkMapper2Dby linking to __imp___ZTV11vtkMapper2D (auto-import)
>  CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text+0x1d0d):vtkTesting.cxx: undefined reference to `vtkPNGWriter::New()'
>  CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text+0x2b7b):vtkTesting.cxx: undefined reference to `vtkJPEGWriter::New()'
>  CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text$_ZN15vtkSmartPointerI12vtkPNGReaderE3NewEv[vtkSmartPointer<vtkPNGReader>::New()]+0xb):vtkTesting.cxx: undefined reference to `vtkPNGReader::New()'
>  collect2: ld returned 1 exit status
>  make[2]: *** [bin/libvtkRendering.dll] Error 1
>  make[1]: *** [Rendering/CMakeFiles/vtkRendering.dir/all] Error 2
>  make: *** [all] Error 2
>
>Does anyone have experience with that?
>
>I guess that in jmorecfg.h (part of Utilities/vtkjpeg) changes need to be done. Also in pngconf.h (part of Utilities/vtkpng).
>Vincent Nicolas helped me with a similar problem: it was due to dll export/import directives. These made problems with gcc as a linker. Therefore changes were made so that no symbols exports were declared. This worked in the case of the 'Common'-part of VTK.
>
>
>Regards,
>
>MB
>______________________________________________________________
>Verschicken Sie romantische, coole und witzige Bilder per SMS!
>Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193
>
>_______________________________________________
>This is the private VTK discussion list.
>Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>Follow this link to subscribe/unsubscribe:
>http://www.vtk.org/mailman/listinfo/vtkusers
>
>  
>
_______________________________________________
This is the private VTK discussion list.
Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.vtk.org/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|

Re: Changes to jmorecfg.h to make Windows DLL (MinGW)

HIRAKI Hideaki
Hello Martin,

vtktiff sources have "__declspec(dllimport) and __declspec(dllexport)
parts of the makros". You should remove them (and more?), too. I think
the problem is not specific to VTK, and some informations are available
from MinGW documents and its community.

Anyway, VTK5.0's dlls could be built on MinGW without editing the
sources, setting '-Wl,--export-all-symbols' to CMAKE_SHARED_LINKER_FLAGS
with CMake2.2.3.

Cheers,

Hideaki Hiraki


At Sun, 12 Feb 2006 23:04:01 +0100, Martin Baumann wrote:

> I did some changes to the source: removed all __declspec(dllimport) and
> __declspec(dllexport) parts of the makros.
> libvtkjpeg.dll is linked without error messages.
>
> Now, I get the following error when libvtktiff.dll is being linked:
>    ... tif_jpeg.c: undefined reference to `_imp__vtk_jpeg_abort´
>    ... tif_jpeg.c: undefined reference to `_imp__vtk_jped_std_error´
>    ... and a lot more ...
>
> when I look at the symbols of libvtkjpeg.dll I see (->nm libvtkjpeg.dll):
>    100240bc I _vtk_jpeg_abort
>    10001717 T _vtk_jpeg_std_error
>    ... and a lot more ...
>
> To me this seems as if the symbol names are wrong: only the '_imp_' is
> to much!
>
> How can I make the the compiler / linker give the functions the correct
> names?
> Or make the linker use the wrong names?
> Or can I change the symbol names without creating new dll files?
>
>
> Regards, Martin
>
>
>
>
> I
>
> Martin Baumann schrieb:
>
> >Hi,
> >
> >I have problems linking VTK-5.0 with MinGW as shared libraries.
> >
> >At linking time I get:
> >  Linking CXX shared library ../bin/libvtkRendering.dll
> >  Info: resolving vtable for vtkPropCollectionby linking to __imp___ZTV17vtkPropCollection (auto-import)
> >  Info: resolving vtable for vtkSimpleCriticalSectionby linking to __imp___ZTV24vtkSimpleCriticalSection (auto-import)
> >  Info: resolving vtable for vtkMapper2Dby linking to __imp___ZTV11vtkMapper2D (auto-import)
> >  CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text+0x1d0d):vtkTesting.cxx: undefined reference to `vtkPNGWriter::New()'
> >  CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text+0x2b7b):vtkTesting.cxx: undefined reference to `vtkJPEGWriter::New()'
> >  CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text$_ZN15vtkSmartPointerI12vtkPNGReaderE3NewEv[vtkSmartPointer<vtkPNGReader>::New()]+0xb):vtkTesting.cxx: undefined reference to `vtkPNGReader::New()'
> >  collect2: ld returned 1 exit status
> >  make[2]: *** [bin/libvtkRendering.dll] Error 1
> >  make[1]: *** [Rendering/CMakeFiles/vtkRendering.dir/all] Error 2
> >  make: *** [all] Error 2
> >
> >Does anyone have experience with that?
> >
> >I guess that in jmorecfg.h (part of Utilities/vtkjpeg) changes need to be done. Also in pngconf.h (part of Utilities/vtkpng).
> >Vincent Nicolas helped me with a similar problem: it was due to dll export/import directives. These made problems with gcc as a linker. Therefore changes were made so that no symbols exports were declared. This worked in the case of the 'Common'-part of VTK.
> >
> >
> >Regards,
> >
> >MB
_______________________________________________
This is the private VTK discussion list.
Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.vtk.org/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|

Re: Changes to jmorecfg.h to make Windows DLL (MinGW)

Mathieu Malaterre-2
Hideaki,

        Thanks for the info. Could you please open a bug in VTK bug tracker for
this issue:

        http://vtk.org/Bug

Thanks
Mathieu


HIRAKI Hideaki wrote:

> Hello Martin,
>
> vtktiff sources have "__declspec(dllimport) and __declspec(dllexport)
> parts of the makros". You should remove them (and more?), too. I think
> the problem is not specific to VTK, and some informations are available
> from MinGW documents and its community.
>
> Anyway, VTK5.0's dlls could be built on MinGW without editing the
> sources, setting '-Wl,--export-all-symbols' to CMAKE_SHARED_LINKER_FLAGS
> with CMake2.2.3.
>
> Cheers,
>
> Hideaki Hiraki
>
>
> At Sun, 12 Feb 2006 23:04:01 +0100, Martin Baumann wrote:
>
>>I did some changes to the source: removed all __declspec(dllimport) and
>>__declspec(dllexport) parts of the makros.
>>libvtkjpeg.dll is linked without error messages.
>>
>>Now, I get the following error when libvtktiff.dll is being linked:
>>   ... tif_jpeg.c: undefined reference to `_imp__vtk_jpeg_abort´
>>   ... tif_jpeg.c: undefined reference to `_imp__vtk_jped_std_error´
>>   ... and a lot more ...
>>
>>when I look at the symbols of libvtkjpeg.dll I see (->nm libvtkjpeg.dll):
>>   100240bc I _vtk_jpeg_abort
>>   10001717 T _vtk_jpeg_std_error
>>   ... and a lot more ...
>>
>>To me this seems as if the symbol names are wrong: only the '_imp_' is
>>to much!
>>
>>How can I make the the compiler / linker give the functions the correct
>>names?
>>Or make the linker use the wrong names?
>>Or can I change the symbol names without creating new dll files?
>>
>>
>>Regards, Martin
>>
>>
>>
>>
>>I
>>
>>Martin Baumann schrieb:
>>
>>
>>>Hi,
>>>
>>>I have problems linking VTK-5.0 with MinGW as shared libraries.
>>>
>>>At linking time I get:
>>> Linking CXX shared library ../bin/libvtkRendering.dll
>>> Info: resolving vtable for vtkPropCollectionby linking to __imp___ZTV17vtkPropCollection (auto-import)
>>> Info: resolving vtable for vtkSimpleCriticalSectionby linking to __imp___ZTV24vtkSimpleCriticalSection (auto-import)
>>> Info: resolving vtable for vtkMapper2Dby linking to __imp___ZTV11vtkMapper2D (auto-import)
>>> CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text+0x1d0d):vtkTesting.cxx: undefined reference to `vtkPNGWriter::New()'
>>> CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text+0x2b7b):vtkTesting.cxx: undefined reference to `vtkJPEGWriter::New()'
>>> CMakeFiles/vtkRendering.dir/vtkTesting.obj(.text$_ZN15vtkSmartPointerI12vtkPNGReaderE3NewEv[vtkSmartPointer<vtkPNGReader>::New()]+0xb):vtkTesting.cxx: undefined reference to `vtkPNGReader::New()'
>>> collect2: ld returned 1 exit status
>>> make[2]: *** [bin/libvtkRendering.dll] Error 1
>>> make[1]: *** [Rendering/CMakeFiles/vtkRendering.dir/all] Error 2
>>> make: *** [all] Error 2
>>>
>>>Does anyone have experience with that?
>>>
>>>I guess that in jmorecfg.h (part of Utilities/vtkjpeg) changes need to be done. Also in pngconf.h (part of Utilities/vtkpng).
>>>Vincent Nicolas helped me with a similar problem: it was due to dll export/import directives. These made problems with gcc as a linker. Therefore changes were made so that no symbols exports were declared. This worked in the case of the 'Common'-part of VTK.
>>>
>>>
>>>Regards,
>>>
>>>MB
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>

_______________________________________________
This is the private VTK discussion list.
Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.vtk.org/mailman/listinfo/vtkusers