Я работаю над приложением, написанным на C. Одна часть приложения должна встраивать python, и в этом моя проблема. Я пытаюсь связать свой источник с библиотекой Python, но он не работает.
Поскольку я использую MinGW, я создал файл python26.a из python26.lib с помощью dlltool и поместил файл * .a в C:/Program Files (x86)/python/2.6/libs
.
Поэтому я компилирую файл с помощью этой команды:
gcc -shared -o mod_python.dll mod_python.o "-LC:\Program Files (x86)\python\2.6\libs" -lpython26 -Wl,--out-implib,libmod_python.a -Wl,--output-def,mod_python.def
и я получаю эти ошибки:
Creating library file: libmod_python.a
mod_python.o: In function `module_init':
mod_python.c:34: undefined reference to `__imp__Py_Initialize'
mod_python.c:35: undefined reference to `__imp__PyEval_InitThreads'
... and so on ...
- Моя корневая папка Python -
C:\Program Files (x86)\python\2.6
- Devsystem - это Windows Server 2008
- GCC Информация:
Reading specs from C:/Program Files (x86)/MinGW/bin/../lib/gcc/mingw32/3.4.5/specs
Configured with: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: win32
gcc version 3.4.5 (mingw-vista special r3)
Что я делаю не так? Как мне его скомпилировать и связать: -)?
Ура, Грегор
Edit:
Я забыл написать информацию о своей установке Python: это официальная установка python.org 2.6.1
... и как я создал файл python.a:
dlltool -z python.def --export-all-symbols -v c:\windows\system32\python26.dll
dlltool --dllname c:\Windows\system32\python26.dll --def python.def -v --output-lib python26.a