[CMake] SWIG CMAKE project not linked correctly

Hendrik Sattler post at hendrik-sattler.de
Fri Sep 15 12:33:24 EDT 2017



Am 15. September 2017 15:23:42 MESZ schrieb Bruce Jones <bruce.david.jones at gmail.com>:
>Hi,
>
>I have a relatively simple SWIG - CMAKE project that is not linked
>correctly, source files can be downloaded here:
>https://drive.google.com/open?id=0B4Y0idbHnikgTUlocmQtNDY2czQ
>
>The problem I have is if the template function Foo is implemented in
>the
>header file, the project compiles and works successfully. If Foo is
>instead
>implemented in the cpp file, the project compiles but fails either when
>linking on at runtime on Windows and Linux respectively.

Templated member functions must be defined in the header. Exceptions are explicitly instantiated ones for certain template parameter values.

>On windows the build will fail at linking with "unresolved external
>symbols", as though the template function is not instantiated.
>
>On Linux python fails to import the module with "undefined symbol".
>
>If I build the projects by hand (not with CMake) they compile and link
>successfully, and run successfully.

Strange. it should not work because the method definition in the cpp file will not result in any symbol due to unknown type T. So what are you doing differently? Some commands must differ.

HS

-- 
Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.


More information about the CMake mailing list