Файл libsample.c
C
int libsample_func(int a, int b) {
return a + b;
}
Собираю:
$ gcc -shared -o libsample.dll libsample.c
И собранная библиотека работает если работать с ней из другого сишного файла.
Но мне нужно её обернуть в python, а питоновский процесс виснет на открытии этой dll-ки:
Python
import ctypes
ctypes.CDLL("libsample.dll")
А если эту же библиотеку собрать в Visual Studio, то она нормально оборачивается в python.
Дурные мысли на тему:Быть может коряво собираю? Пытаюсь собрать с использованием
dlltool по примеру в его же мануале
$ gcc -c libsample.c
$ dlltool -z libsample.def libsample.o --export-all-symbols
$ dlltool -e libsample_exports.o -l libsample.lib libsample.o
$ gcc libsample.o libsample_exports.o -o libsample.dll
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(libcmain.o):(.text+0xa9): undefined reference to `_WinMain@16'
collect2: ld returned 1 exit status
Оно и понятно, нету main-а. Может пропущен парамертр -shared в последней строчке? Но с ним собирается библиотека, которая так же не работает в питоне.
Offtopic:Вопрос вызван тем, что пытаюсь собрать библиотеку
libmpq на винде и обернуть ее в питон. Стандартным способом ./configure && make && make install не собирается. Точнее собирается, но только статическая библиотека, а на этапе make вылезает: libtool: link: warning: undefined symbols not allowed in i686-pc-cygwin shared libraries. А если пытаюсь собрать вручную(gcc -shared), то питон так же виснет.