Nahuel Defossé | 13 Dec 15:29 2010
Picon

Re: Linking against static library in specific path

I found the answer, I had to add extra_objects to the Extension call, like this:


setup(
  name = 'ipcbus',
  ext_modules=[
    Extension("ipcbus",
              sources=["ipcbus.pyx", "../lib/ipcbus/ipcbus_message.cpp"], # Note, you can link against a c++ library instead of including the source
              include_dirs=["../lib/ipcbus"],
              libraries = ["../lib/ipcbus.a",],
              language="c++",
              extra_objects=["../lib/libipcbus.a"],),
    ],
  cmdclass = {'build_ext': build_ext},

)


Sorry for bothering you


2010/12/13 Nahuel Defossé <nahuel.defosse <at> gmail.com>
I'm trying to wrap some existing C++ code which is compiled and bundled in static .a libraries.
I've followed the guide exposed at http://wiki.cython.org/WrappingCPlusPlus and I wrote down this
setup.py file:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
  name = 'ipcbus',
  ext_modules=[
    Extension("ipcbus",
              sources=["ipcbus.pyx", "../lib/ipcbus/ipcbus_message.cpp"], # Note, you can link against a c++ library instead of including the source
              include_dirs=["../lib/ipcbus"],
              libraries = ["../lib/ipcbus.a",],
              #extra_link_args = ["../lib/libipcbus.a",],
              language="c++"),
    ],
  cmdclass = {'build_ext': build_ext},

)

Am I getting something wrong? libipcbus.a is a static lib, and though it compiles fine, I get some undefined symbols errors.

The library, as the above text shows is located in ../lib/.

Thanks


Gmane