Форум сайта python.su
#include <Python.h>
#include <string.h>
static PyObject *message(PyObject *self, PyObject *args) {
char *fromPython, result;
if (!PyArg_Parse(args, “(s)”, &fromPython)) {
return NULL;
} else {
strcpy(result, “Hello ”);
strcat(result, fromPython);
return Py_BuildValue(“s”, result);
}
}
static struct PyMethodDef hello_methods = {
{“message”, message, 1},
{NULL, NULL}
};
void inithello() {
(void) Py_InitModule(“hello”, hello_methods);
}
Вопрос: как компилить под виндой?
gcc –static “-IC:\Devel\Python25\Include” main.c -o hello.dll
Но тут надо прилинковать файл. libpython25.a Как?
-l пробовал в куче вариантов, не находит =\
gcc из Code::Blocks юзаю, когда в нем делаю, он линкует, но с неправильными параметрами.
Офлайн
-Lпуть_к_либам -lpython25 добавь
Офлайн
C:\!Docs\!python\ext>gcc --static "-IC:\Devel\Python25\Include" "-LC:\Devel\Python25\libs" -lpython25 hello.c -o hello.dll C:\DOCUME~1\ner\LOCALS~1\Temp/ccyYbaaa.o:hello.c:(.text+0x1f): undefined reference to `_imp__PyArg_Parse' C:\DOCUME~1\ner\LOCALS~1\Temp/ccyYbaaa.o:hello.c:(.text+0x72): undefined reference to `_imp__Py_BuildValue' C:\DOCUME~1\ner\LOCALS~1\Temp/ccyYbaaa.o:hello.c:(.text+0xb4): undefined reference to `_imp__Py_InitModule4' C:/Devel/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../..\libmingw32.a(main.o):main.c:(.text+0x106): undefined reference to `WinMain@16' collect2: ld returned 1 exit status
Офлайн
“C:\Program Files\Microsoft Visual Studio\VC98\Bin\cl.exe” /nologo /TC /IC:\Devel\Python25\Include /GD hello.c /link /DLL /LIBPATH:C:\Devel\Python25\libs /RELEASE /EXPORT:inithello /out:hello.pyd
Этим под VS6 компилит. Хотелось бы под gcc теперь.
Офлайн
почему вы не пользуетесь поддержкой в distutils? напишите setup.py, потом
setup.py build_ext –compiler=mingw32
должно работать.
Офлайн
nerezusВот этот gcc попробуйте использовать: http://www.develer.com/oss/GccWinBinaries
Хотелось бы под gcc теперь.
python setyp.py bdist_egg
Офлайн
OlDerbdist_egg?nerezusВот этот gcc попробуйте использовать: http://www.develer.com/oss/GccWinBinaries
Хотелось бы под gcc теперь.
Он при установке сам прописывается в distutils и потом под винду все компилируется простой командой:;)python setyp.py bdist_egg
Офлайн
bialixДа, а что не так? Вернее, я вижу, что неправильно написал слово “setup”, а bdist_egg, вроде, правильно? ;)
bdist_egg?
Офлайн
Как сделать расширения для Пайтона используя компиляторы С\С++
http://www.geocities.com/foetsch/python/extending_python.htm
http://sebsauvage.net/python/mingw.html
http://www.swig.org/papers/PyTutorial98/PyTutorial98.pdf
http://boodebr.org/main/python/build-windows-extensions
Вообще то для написания расширений можна использовать более простой вариант, например использовать утилиту SWIG или язык PyRex.
Очень неплохо использовать для создания расширений модуль Boost.Python
http://www.boost.org/libs/python/doc/tutorial/doc/html/python/techniques.html
Примеры использования Boost with Python здесь http://www.codesampler.com/python.htm
Офлайн
OlDerЯ надеюсь вы улавливаете разницу между 3 буквами ext и 3 буквами egg.bialixДа, а что не так? Вернее, я вижу, что неправильно написал слово “setup”, а bdist_egg, вроде, правильно? ;)
bdist_egg?
> python setup.py --help-commands
Standard commands:
build build everything needed to install
build_py "build" pure Python modules (copy to build directory)
build_ext build C/C++ extensions (compile/link to build directory)
build_clib build C/C++ libraries used by Python extensions
build_scripts "build" scripts (copy and fixup #! line)
clean clean up output of 'build' command
install install everything from build directory
install_lib install all Python modules (extensions and pure Python)
install_headers install C/C++ header files
install_scripts install scripts (Python or otherwise)
install_data install data files
sdist create a source distribution (tarball, zip file, etc.)
register register the distribution with the Python package index
bdist create a built (binary) distribution
bdist_dumb create a "dumb" built distribution
bdist_rpm create an RPM distribution
bdist_wininst create an executable installer for MS Windows
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
Отредактировано (Апрель 24, 2007 18:26:02)
Офлайн