Hi all, I'm having some trouble making some bits of the Python core code available to extension modules. Specifically, I'm trying to add a function 'Py_force_to_memory' to Python/pymath.c and then use it (via a macro) from Modules/cmathmodule.c. But importing of the cmath module fails with a 'Symbol not found' error. The function is declared with a 'PyAPI_FUNC' in Python/pymath.h. Here's the relevant portion of the make output: *** WARNING: renaming "cmath" since importing it failed: dlopen(build/lib.macosx-10.3-i386-2.7/cmath.so, 2): Symbol not found: _Py_force_to_memory Referenced from: /Users/dickinsm/python_source/branches/trunk/build/lib.macosx-10.3-i386-2.7/cmath.so Expected in: dynamic lookup This is a non-debug trunk build, on OS X (10.5.5), with all the defaults. I'm using Apple's standard toolchain (gcc 4.0.1, Darwin linker). The patch I'm building with can be seen at: http://bugs.python.org/issue4575 (It's the first of the two patches there, called 'force_to_memory.patch'.) I think I understand the cause of this problem; I just don't know how to fix it. The cause seems to be that none of the symbols in pymath.o is used in the Python executable; they're used only in the extension modules. So while the '_Py_force_to_memory' symbol appears in libpython2.7.a, it doesn't appear in the python.exe executable; hence the above error. If I move the definition of Py_force_to_memory from Python/pymath.c to Objects/floatobject.c then everything works as expected. Questions: (1) Is this an OS X only problem? (2) Is there an easy way to force a particular symbol (or all the symbols from a particular object file) to be exported in the Python executable, so that it's available to a dynamically loaded extension module? I've found the -u option to gcc, but this doesn't seem like a particularly portable solution. Of course, if this problem exists only on OS X, then the solution doesn't need to be portable. Thanks, Mark
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4