[vtk-developers] Undefined symbols after wrapping my code to Python

Ronald Römer rroemer at gmail.com
Mon Oct 9 23:49:22 EDT 2017


Yes, that's right.

On 10.10.2017 05:45, David Gobbi wrote:
> I'm just trying to make sure that we're communicating the correct
> information back and forth here...
>
> Are you saying that after adding vtkWrappingPythonCore to
> target_link_libraries(), you were able to successfully compile your
> project, but when trying to import the module you saw unresolved
> symbol errors for PyVTKClass_New and other "PyVTK_*" methods?
>
> The vtkWrappingPythonCore library existed in VTK 5, as well, but it
> was called vtkPythonCore back then.
>
>  - David
>
>
> On Mon, Oct 9, 2017 at 9:28 PM, Ronald Römer <rroemer at gmail.com
> <mailto:rroemer at gmail.com>> wrote:
>
>     There are still undefined symbols:
>
>     00000000002074e0 d DW.ref.__gxx_personality_v0
>     U PyBool_FromLong
>     U PyDict_SetItemString
>     U PyErr_Occurred
>     U PyInt_FromLong
>     U PyModule_GetDict
>     U PyString_FromString
>     00000000000040f9 T PyVTKAddFile_vtkPolyDataBooleanFilter
>     U PyVTKClass_New
>     U PyVTKClass_Type
>     U PyVTKClass_vtkPolyDataAlgorithmNew
>     0000000000004087 T PyVTKClass_vtkPolyDataBooleanFilterNew
>     U PyVTKObject_GetObject
>     U PyVTKObject_SetFlag
>     U PyVTKObject_Type
>     U Py_FatalError
>     U Py_InitModule4_64
>
>     I think it is a problem with the modularized VTK, that is present
>     since version 6.
>
>     libvtkWrappingPython27Core-6.3.so
>     <http://libvtkWrappingPython27Core-6.3.so> exists in the lib
>     directory.
>
>
>
>
>     On 10.10.2017 05:18, David Gobbi wrote:
>>     Did it fail because it didn't find the library?  Or did it fail
>>     because it still had unresolved symbols?
>>
>>     On Mon, Oct 9, 2017 at 9:14 PM, Ronald Römer <rroemer at gmail.com
>>     <mailto:rroemer at gmail.com>> wrote:
>>
>>         I already tried this without any success. I have no idea what
>>         is wrong with it. You can try to modify my code to find out
>>         the correct necessary changes.
>>
>>         Best regards
>>         Ronald
>>
>>
>>
>>         On 10.10.2017 04:59, David Gobbi wrote:
>>>         Hi Ronald,
>>>
>>>         Use the following:
>>>
>>>         target_link_libraries(${PROJECT_NAME}PythonD ${PROJECT_NAME}
>>>         vtkWrappingPythonCore)
>>>
>>>         You might also have to add vtkWrappingPythonCore to the
>>>         components for find_package(VTK).
>>>
>>>          - David
>>>
>>>
>>>         On Mon, Oct 9, 2017 at 8:34 PM, Ronald Römer
>>>         <rroemer at gmail.com <mailto:rroemer at gmail.com>> wrote:
>>>
>>>             Hello,
>>>
>>>             I'm trying to fix a problem with the python wrapper of
>>>             my library. In my CMakeLists.txt there are the following
>>>             lines:
>>>
>>>             find_package(VTK REQUIRED COMPONENTS vtkFiltersSources
>>>             vtkIOLegacy vtkFiltersExtraction vtkFiltersGeometry
>>>             vtkFiltersModeling vtkRenderingFreeType NO_MODULE)
>>>
>>>             include(${VTK_USE_FILE})
>>>
>>>             if(VTK_WRAP_PYTHON)
>>>                 find_package(PythonLibs 2.7 REQUIRED)
>>>
>>>                 if(PYTHONLIBS_FOUND)
>>>
>>>                     include_directories(${PYTHON_INCLUDE_DIRS}
>>>             ${PROJECT_SOURCE_DIR})
>>>
>>>                     include(vtkWrapPython)
>>>
>>>                     vtk_wrap_python3(${PROJECT_NAME}Python
>>>             ${PROJECT_NAME}Python_srcs vtkPolyDataBooleanFilter.cxx)
>>>
>>>                     add_library(${PROJECT_NAME}PythonD
>>>             ${${PROJECT_NAME}Python_srcs})
>>>                     target_link_libraries(${PROJECT_NAME}PythonD
>>>             ${PROJECT_NAME})
>>>
>>>                     add_library(${PROJECT_NAME}Python MODULE
>>>             ${PROJECT_NAME}PythonInit.cxx)
>>>                     target_link_libraries(${PROJECT_NAME}Python
>>>             ${PROJECT_NAME}PythonD)
>>>
>>>                 endif()
>>>             endif()
>>>
>>>             When I try to import the module into a python script, I
>>>             get an import error about undefined symbols like
>>>             PyVTKObject_Type. After a little research with nm I
>>>             found out that the shared object is not linked to
>>>             libvtkWrappingPython27Core. Here are the first lines of it:
>>>
>>>             U PyBool_FromLong
>>>             U PyDict_SetItemString
>>>             U PyErr_Occurred
>>>             U PyInt_FromLong
>>>             U PyModule_GetDict
>>>             U PyString_FromString
>>>             0000000000003020 T PyVTKAddFile_vtkPolyDataBooleanFilter
>>>             U PyVTKClass_New
>>>             U PyVTKClass_Type
>>>             U PyVTKClass_vtkPolyDataAlgorithmNew
>>>
>>>             How to fix this? There is no documentation about the the
>>>             python wrapper, except
>>>             https://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ
>>>             <https://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ>.
>>>
>>>             I'm actually using VTK 6.3 and my library can be found
>>>             on https://github.com/zippy84/vtkbool
>>>             <https://github.com/zippy84/vtkbool>.
>>>
>>>             Best regards
>>>             Ronald
>>>
>>>
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20171010/ae883479/attachment-0001.html>


More information about the vtk-developers mailing list