Cython: Dynamically linking with a dll/so
Question: I'm working with an API which is distributed as a dll/so file that I need to
dynamically link with my python program. To accomplish this, I want to use
Cython.

I have been able to, in the past, link with the dll statically. This works
well, except that the API comes in four different flavors, with theoretically
infinitely more to come and the users should be able to compile them with
whatever name they want (Kinda like a plugin system). Because of that, I can't
just make an so/pxd file that statically links with just one library, or even
links with a selection of them.

What I need is to be able to pass the so/dll name into the Cython code and
have it "import" it. I know this can be done with ctypes via
ctypes.cdll.LoadLibrary, but is this kind of thing possible in Cython? Am I
going to have to use ctypes to do this?


Answer: I assume you are talking about writing C modules here. If so yes you can. I
don't know what the equivalent on Windows is, but in Linux you can use dlopen
and friends. There is a man page for it, and several web sites documenting it.
Try this link "http://linux.die.net/man/3/dlopen" it provides you with a nice
example near the bottom of the page. This is doing the same thing as what
ctypes does, in fact I think this might even be what ctypes uses.

