[vtkusers] VTK and Qt, static build - CORRECTION

Gib Bogle g.bogle at auckland.ac.nz
Tue Sep 21 21:35:52 EDT 2010


Hi Andre,

I'm using Qt-4.6.3, and MinGW-4.4.0, but I suspect that these  
differences are not significant.  The main thing is that I'm using  
QtCreator/qmake, not cmake.  I started using the QtCreator IDE because  
it is what Nokia recommend and it's easy to use, and I have it working  
well (up until now!) on Windows, Linux and Mac-OSX.

Here are a few of the undefined references:

./release\myvtk.o:myvtk.cpp:(.text+0x1c3): undefined reference to  
`_imp___ZN11vtkRenderer11RemoveActorEP7vtkProp'
./release\myvtk.o:myvtk.cpp:(.text+0x238): undefined reference to  
`_imp___ZN8vtkActor3NewEv'
./release\myvtk.o:myvtk.cpp:(.text+0x259): undefined reference to  
`_imp___ZN8vtkActor11GetPropertyEv'
./release\myvtk.o:myvtk.cpp:(.text+0x292): undefined reference to  
`_imp___ZN11vtkProperty8SetColorEddd'
./release\myvtk.o:myvtk.cpp:(.text+0x46a): undefined reference to  
`_imp___ZN9vtkProp3D10RotateWXYZEdddd'
./release\myvtk.o:myvtk.cpp:(.text+0x47d): undefined reference to  
`_imp___ZN11vtkRenderer8AddActorEP7vtkProp'
./release\myvtk.o:myvtk.cpp:(.text+0x64c): undefined reference to  
`_imp___ZN8vtkActor3NewEv'
./release\myvtk.o:myvtk.cpp:(.text+0x66d): undefined reference to  
`_imp___ZN8vtkActor11GetPropertyEv'
./release\myvtk.o:myvtk.cpp:(.text+0x6a6): undefined reference to  
`_imp___ZN11vtkProperty8SetColorEddd'
./release\myvtk.o:myvtk.cpp:(.text+0x6b9): undefined reference to  
`_imp___ZN11vtkRenderer8AddActorEP7vtkProp'
./release\myvtk.o:myvtk.cpp:(.text+0x799): undefined reference to  
`_imp___ZN11vtkRenderer11RemoveActorEP7vtkProp'

There are many more (about 75), presumably one for every call to a  
function in one of the VTK libraries I'm linking (-lvtkCommon  
-lvtkGraphics -lvtkFiltering -lvtkIO -lvtkImaging -lvtkRendering  
-lQVTK).  Each symbol that isn't found corresponds to a symbol in one  
of the libraries.  For example in libvtkrendering.a there is the  
symbol __ZN11vtkRenderer11RemoveActorEP7vtkProp.

It looks as if the compiler is being somehow instructed to add the  
"_imp_" prefix to all the VTK functions referenced in myvtk.cpp, i.e.  
all the functions associated with using a QVTKWidget with interactor  
capabilities .  When I look in myvtk.o I see all those "_imp_"  
symbols.  Unfortunately I understand only enough of this stuff to be  
dangerous.  There must be a way to tell qmake not to do this, but I  
don't think it's within my unaided capabilities to find out how - at  
least not in a reasonable amount of time.

Cheers
Gib

Quoting André Prins <a.h.prins at gmail.com>:

> Hi Gib,
>
> At the moment I have a static Vtk (5.6.0) with a dynamic Qt
> (4.7.0-beta2) on Windows with MinGW (GCC 4.5.0) and this works without
> any problems. I do not specify explicitly that I use a static Vtk,
> although this may be hidden in the UseVtk cmakefile.
>
> In my CMakeLists.txt, I simply do the following:
>
>     find_package( VTK REQUIRED HINTS $ENV{VTKDIR} )
>     include( ${VTK_USE_FILE} )
>     # ... and further down specifying the link-libraries
>     target_link_libraries( MyFilters vtkImaging vtkGraphics vtkIO )
>
> Do you use cmake for your own project as well? Which "undefined
> references" are missing?
>
> Regards,
> Andre
>
> On Tue, Sep 21, 2010 at 3:07 AM, Gib Bogle <g.bogle at auckland.ac.nz> wrote:
>> Sorry, I made a mistake.  I did 'make clean' and re-generated the make files
>> with cmake, then did make again.  Now the VTK library files have the correct
>> symbols (no "_imp___" prefixes).  I'm not sure what my mistake was before,
>> probably not cleaning something.
>>
>> Anyway, the problem with the app linker remains, many "undefined references"
>> to  the VTK symbols prefixed by "_imp___".  Presumably I need a way to tell
>> the IDE (which is QtCreator) to expect static versions of the library
>> symbols.  I'm not sure whether this is a compile or a link issue.  I realize
>> that this is now a Qt issue.
>>
>> BTW this is all Windows with MinGW.
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtkusers
>>
>



----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



More information about the vtkusers mailing list