[vtkusers] python wrapping for external function fails on init function

David Gobbi david.gobbi at gmail.com
Tue Sep 20 11:31:11 EDT 2016


Hi Kate,

The magic CMake incantations for python modules are as follows:

  set(MODULE_PYTHON_NAME vtkhdftIOPython)
  add_library(${MODULE_PYTHON_NAME} MODULE ${MODULE_PYTHON_NAME}Init.cxx)
  set_target_properties(${MODULE_PYTHON_NAME} PROPERTIES PREFIX "")
  if(WIN32 AND NOT CYGWIN)
    set_target_properties(${MODULE_PYTHON_NAME} PROPERTIES SUFFIX ".pyd")
  endif()
  if(CMAKE_VERSION VERSION_GREATER 2.8.8)
    set_target_properties(${MODULE_PYTHON_NAME} PROPERTIES NO_SONAME 1)
  endif()

The trick is to set the prefix specifically for vtkhdftIOPython, don't try
to set a global prefix with CMAKE_SHARED_LIBRARY_PREFIX.

 - David


On Tue, Sep 20, 2016 at 7:43 AM, Kate Fissell <fissell at pitt.edu> wrote:

> Hi,
>
> I am running VTK-7.0.0 on an Ubuntu platform using python 2.7.
> I have a cmake configuration for python wrapping that worked on VTK-6.2.0
> and I
> am trying to port it to VTK-7.
>
> It builds ok, but when I try to import into python I get the error
> ImportError: dynamic module does not define init function
> (initlibvtkhdftIOPython)
> (my function is vtkhdftIO).
>
> I believe this is because vtkWrapPythonInit.c no longer has the loop
> #if defined(__CYGWIN__) || !defined(_WIN32)
>     /* add a "lib" prefix for compatibility with old python scripts */
>     if (strcmp(prefix, "lib") != 0)
>       {
>       prefix = "lib";
>       continue;
>       }
> #endif
>
>
> My lib is named libvtkhdftIOPython.so, libvtkhdftIOPythonD.so, but it
> contains
> initvtkhdftIOPython  (from running strings on the .so).  Under vtk-6.2.0
> the so file contained
> initvtkhdftIOPython
> initlibvtkhdftIOPython
>
> I have tried various things with CMAKE_SHARED_LIBRARY_PREFIX  to either
> get cmake to build the initlibvtkhdftIOPython function, or, to take the
> lib prefix off
> the .so, but have not succeeded.
>
> Can you tell me how to get the lib prefix correctly coordinated between
> init
> function and lib name  ?
>
> thanks
> Kate
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160920/14df7109/attachment.html>


More information about the vtkusers mailing list