Russian Qt Forum
Май 03, 2024, 03:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: [Решено] Сборка PythonQt под Windows  (Прочитано 31318 раз)
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« : Апрель 20, 2011, 20:36 »

Коллеги, пытаюсь собрать PythonQt с иcпользованием Qt SDK для Windows. На этапе сборки - ошибки:
Код:
cd src\ && C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile 

mingw32-make[1]: Entering directory `C:/PythonQt-build-desktop/src'

C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Release

mingw32-make[2]: Entering directory `C:/PythonQt-build-desktop/src'

g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -shared -mthreads -Wl -Wl,--out-implib,..\lib\libPythonQt.a -o ..\lib\PythonQt.dll object_script.PythonQt.Release  -L"c:\Qt\2010.05\qt\lib" c:\Python26\libs\python26.lib -lQtGui4 -lQtCore4

Creating library file: ..\lib\libPythonQt.a

mingw32-make[2]: Leaving directory `C:/PythonQt-build-desktop/src'

mingw32-make[1]: Leaving directory `C:/PythonQt-build-desktop/src'

mingw32-make: Leaving directory `C:/PythonQt-build-desktop'

./release\PythonQt.o:PythonQt.cpp:(.text+0x2e8): undefined reference to `_imp__PyModule_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0x427): undefined reference to `_imp__PyInt_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0x48d): undefined reference to `_imp__PyType_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0x26ed): undefined reference to `_imp__PyExc_AttributeError'

./release\PythonQt.o:PythonQt.cpp:(.text+0x4d54): undefined reference to `_imp__PyModule_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0x51bf): undefined reference to `_imp__PyModule_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0x663d): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQt.o:PythonQt.cpp:(.text+0x6999): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQt.o:PythonQt.cpp:(.text+0x6aab): undefined reference to `_imp__PyModule_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0x6d79): undefined reference to `_imp__PyType_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0x6df1): undefined reference to `_imp__Py_NoSiteFlag'

./release\PythonQt.o:PythonQt.cpp:(.text+0x71a5): undefined reference to `_imp__PyType_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0x721d): undefined reference to `_imp__Py_NoSiteFlag'

./release\PythonQt.o:PythonQt.cpp:(.text+0xd10f): undefined reference to `_imp__PyClass_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0xd118): undefined reference to `_imp__PyCFunction_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0xd120): undefined reference to `_imp__PyFunction_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0xd129): undefined reference to `_imp__PyModule_Type'

./release\PythonQt.o:PythonQt.cpp:(.text+0xd131): undefined reference to `_imp__PyMethod_Type'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0xbd): undefined reference to `_imp__Py_OptimizeFlag'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x103): undefined reference to `_imp__PyExc_ImportError'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x3ca): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x407): undefined reference to `_imp__Py_VerboseFlag'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x49f): undefined reference to `_imp__Py_VerboseFlag'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x501): undefined reference to `_imp__PyCode_Type'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x53b): undefined reference to `_imp__PyExc_TypeError'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x727): undefined reference to `_imp__Py_VerboseFlag'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x7c9): undefined reference to `_imp__Py_VerboseFlag'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x805): undefined reference to `_imp__Py_VerboseFlag'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x166a): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x17ee): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x1827): undefined reference to `_imp__Py_VerboseFlag'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x2360): undefined reference to `_imp__Py_VerboseFlag'

./release\PythonQtImporter.o:PythonQtImporter.cpp:(.text+0x2a7b): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0x4): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0x75): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0x89): undefined reference to `_imp__PyExc_RuntimeError'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0x207): undefined reference to `_imp__PyType_Type'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0x8ec): undefined reference to `_imp__PyExc_ValueError'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0xf6a): undefined reference to `_imp__PyExc_ValueError'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0x1009): undefined reference to `_imp__PyExc_ValueError'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0x124e): undefined reference to `_imp__PyExc_ValueError'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0x1897): undefined reference to `_imp__PyExc_ValueError'

./release\PythonQtSlot.o:PythonQtSlot.cpp:(.text+0x1c27): more undefined references to `_imp__PyExc_ValueError' follow

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0xa): undefined reference to `_imp___Py_ZeroStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x15): undefined reference to `_imp___Py_TrueStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x20d): undefined reference to `_imp__PyFloat_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x219): undefined reference to `_imp__PyInt_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x233): undefined reference to `_imp__PyLong_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x23e): undefined reference to `_imp___Py_ZeroStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x246): undefined reference to `_imp___Py_TrueStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x2ae): undefined reference to `_imp__PyInt_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x2d6): undefined reference to `_imp__PyLong_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x2f3): undefined reference to `_imp__PyFloat_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x2fe): undefined reference to `_imp___Py_ZeroStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x306): undefined reference to `_imp___Py_TrueStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x38d): undefined reference to `_imp__PyInt_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x397): undefined reference to `_imp__PyLong_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3c2): undefined reference to `_imp__PyFloat_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3cd): undefined reference to `_imp___Py_ZeroStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3d5): undefined reference to `_imp___Py_TrueStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x461): undefined reference to `_imp__PyInt_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x483): undefined reference to `_imp__PyFloat_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x48b): undefined reference to `_imp__PyLong_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x493): undefined reference to `_imp___Py_ZeroStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x49b): undefined reference to `_imp___Py_TrueStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x519): undefined reference to `_imp___Py_ZeroStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x521): undefined reference to `_imp___Py_TrueStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x169f): undefined reference to `_imp__PyString_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x2837): undefined reference to `_imp__PyString_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x29b2): undefined reference to `_imp__PyString_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x2d0d): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x2dba): undefined reference to `_imp___Py_TrueStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x2e39): undefined reference to `_imp___Py_ZeroStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x2f65): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x34fc): undefined reference to `_imp__PyString_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3508): undefined reference to `_imp__PyUnicode_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3514): undefined reference to `_imp__PyInt_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3dea): undefined reference to `_imp__PyLong_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3df6): undefined reference to `_imp__PyFloat_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3e02): undefined reference to `_imp___Py_ZeroStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3e0e): undefined reference to `_imp___Py_TrueStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3e4c): undefined reference to `_imp__PyDict_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3e58): undefined reference to `_imp__PyList_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3e64): undefined reference to `_imp__PyTuple_Type'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x3e92): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtConversion.o:PythonQtConversion.cpp:(.text+0x4838): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtSignalReceiver.o:PythonQtSignalReceiver.cpp:(.text+0xe8): undefined reference to `_imp__PyFunction_Type'

./release\PythonQtSignalReceiver.o:PythonQtSignalReceiver.cpp:(.text+0xf6): undefined reference to `_imp__PyMethod_Type'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x72): undefined reference to `_imp__PyBaseObject_Type'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x254): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x4ac): undefined reference to `_imp___Py_NotImplementedStruct'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x505): undefined reference to `_imp___Py_NotImplementedStruct'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x586): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0xf58): undefined reference to `_imp__PyBaseObject_Type'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x11c3): undefined reference to `_imp__PyBaseObject_Type'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x1863): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x1a2a): undefined reference to `_imp__PyExc_ValueError'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x1dac): undefined reference to `_imp__PyExc_AttributeError'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x205c): undefined reference to `_imp__PyExc_ValueError'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x2302): undefined reference to `_imp__PyExc_AttributeError'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x2cc0): undefined reference to `_imp__PyBaseObject_Type'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x2f51): undefined reference to `_imp__PyExc_AttributeError'

./release\PythonQtInstanceWrapper.o:PythonQtInstanceWrapper.cpp:(.text+0x3177): undefined reference to `_imp__PyExc_AttributeError'

./release\PythonQtClassWrapper.o:PythonQtClassWrapper.cpp:(.text+0x7): undefined reference to `_imp__PyType_Type'

./release\PythonQtClassWrapper.o:PythonQtClassWrapper.cpp:(.text+0x29): undefined reference to `_imp__PyType_Type'

./release\PythonQtClassWrapper.o:PythonQtClassWrapper.cpp:(.text+0x1ec): undefined reference to `_imp__PyType_Type'

./release\PythonQtClassWrapper.o:PythonQtClassWrapper.cpp:(.text+0x21c): undefined reference to `_imp__PyExc_TypeError'

./release\PythonQtClassWrapper.o:PythonQtClassWrapper.cpp:(.text+0x34c): undefined reference to `_imp___Py_NoneStruct'

./release\PythonQtClassWrapper.o:PythonQtClassWrapper.cpp:(.text+0x559): undefined reference to `_imp___Py_ZeroStruct'

./release\PythonQtClassWrapper.o:PythonQtClassWrapper.cpp:(.text+0xed9): undefined reference to `_imp__PyExc_ArithmeticError'

./release\PythonQtClassWrapper.o:PythonQtClassWrapper.cpp:(.text+0x28b8): undefined reference to `_imp__PyType_Type'

./release\PythonQtClassWrapper.o:PythonQtClassWrapper.cpp:(.text+0x29ae): undefined reference to `_imp__PyExc_AttributeError'

./release\PythonQtScriptingConsole.o:PythonQtScriptingConsole.cpp:(.text+0x2555): undefined reference to `_imp__PyModule_Type'

./release\moc_com_trolltech_qt_core_builtin0.o:moc_com_trolltech_qt_core_builtin0.cpp:(.text+0x94fd): undefined reference to `_imp___Py_NoneStruct'

collect2: ld returned 1 exit status

mingw32-make[2]: *** [..\lib\PythonQt.dll] Error 1

mingw32-make[1]: *** [release] Error 2

mingw32-make: *** [sub-src-make_default-ordered] Error 2

Процесс "C:/Qt/2010.05/mingw/bin//mingw32-make.exe" завершился с кодом %2.
Возникла ошибка при сборке проекта PythonQt (цель: Настольный компьютер)
Во время выполнения сборки на этапе "Сборка"

Имен, которых не находит линковщик, в библиотеке импорта python26.lib нет.
Версии: PythonQt 2.0.1, Python 2.6.6, Qt SDK OPenSource 2010.05 или 1.1 beta.
В чем проблема?
Есть кто-нибудь, у кого есть опыт использования PythonQt?
« Последнее редактирование: Апрель 26, 2011, 18:45 от sergek » Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Wlad_C
Гость
« Ответ #1 : Апрель 21, 2011, 10:57 »

Функции, которые не находит линковщик, это функции Python.
Чтобы собрать PythonQt надо:
1. установить сам Питон
2. настроить файлы common.prf, python.prf, PythonQt.prf

Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #2 : Апрель 21, 2011, 16:35 »

Цитировать
Функции, которые не находит линковщик, это функции Python.
Положим, не только функции, но и переменные. И не факт, что Питона. Попробуйте, например, найти в общем индексе документации переменную Py_NoSiteFlag. Не найдете, а она есть... ;-)

Цитировать
Чтобы собрать PythonQt надо:
1. установить сам Питон
2. настроить файлы common.prf, python.prf, PythonQt.prf
Да знаю я... Из моего письма разве не понятно, что питон стоит 2.6.6? И prf настроены как надо.
А вы сами не пробовали? Попробуйте, может, у Вас получится. Времени всего полчаса потребуется (если Qt SDK opensource уже стоит).
Вот ссылки на дистрибутивы:
http://sourceforge.net/projects/pythonqt/files/pythonqt/PythonQt-2.0.1/PythonQt2.0.1.zip/download
http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
asvil
Гость
« Ответ #3 : Апрель 21, 2011, 16:42 »

Помню, что Пайтон собирается msvc 6.0, а вот Qt - mingw. Может ли Ваша проблема заключатся в знаменитой несовместимости макрософт линкера с остальными участниками программистского цирка?
« Последнее редактирование: Апрель 21, 2011, 16:52 от Филоненко Михаил » Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #4 : Апрель 21, 2011, 21:55 »

Помню, что Пайтон собирается msvc 6.0, а вот Qt - mingw. Может ли Ваша проблема заключатся в знаменитой несовместимости макрософт линкера с остальными участниками программистского цирка?
Это я тоже помню. Но вот беда, если посмотреть список всех символов, содержащихся в библиотеке питона:
> nm python26.lib >> symbols.txt
то нет там ни одного имени, о котором говорит линковщик... И я не могу это объяснить.
Может, кто-нибудь все же попробует собрать PythonQt?
А я попробую собрать Питона мингвой.
« Последнее редактирование: Апрель 21, 2011, 22:01 от sergek » Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
asvil
Гость
« Ответ #5 : Апрель 22, 2011, 10:20 »

Таки *.lib файлы не поттягиваются MinGw до сих пор. Создайте *.a файл из *.dll/lib.
Код:
reimp python.lib
Или так
Код:
dlltool -k -dpython.def -lpython.a
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #6 : Апрель 22, 2011, 15:23 »

Таки *.lib файлы не поттягиваются MinGw до сих пор.
Вот сейчас подключил к проекту python26.lib, в программе сделал питоновские вызовы Py_Initialize () и Py_Finalize (). Компоновщик проглотил это молча, программа отработала.
В чем отсутствие поддержки lib?
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
asvil
Гость
« Ответ #7 : Апрель 22, 2011, 15:53 »

Таки, значит поттягиваются. Только у вас в неразрешенных зависимостях нет того, что Вы сейчас назвали.
У Вас вроде не "резолвятся" указатели на extern переменные, а не на функции. Соотвественно сделайте хоть lib хоть a чтобы механизмы друг друга нашли.
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #8 : Апрель 26, 2011, 11:09 »

Все-таки проблема несовместимости библиотеки импорта python26.lib, поставляемой в составе дистрибутива Питона, с mingw.
Собрать PythonQt удалось. Проверю, выложу рецепт. Вкратце - создание библиотеки импорта для mingw из python2.dll с использованием утилит pexports, dlltool.
Прошу прощения у Филоненко М. - его сомнения я опроверг неправильно поставленным экспериментом  Грустный
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #9 : Апрель 26, 2011, 18:43 »

Обещанный рецепт сборки PythonQt (232 revision).

1) Используем Qt SDK 1.2.1 (Open Source), установленный в C:\QtSDK, Windows 7 домашняя базовая 64 бит. Для WinXP примерно все то же самое.

2) Скачиваем архив с утилитами mingw (MinGW Utilities 0.3 Windows Binary)
 http://olex.openlogic.com/packages/mingw-utils/0.3#package_detail_tabs

Разархивируем каталоги bin и doc полученного архива в соответствующие каталоги C:\QtSDK\mingw\bin и doc.

3) Ставим Python 2.6 из дистрибутива в каталог по умолчанию C:\Python26
 http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi

4) В командной строке из состава Qt SDK переходим в каталог C:\Python26\libs и выполняем:

Setting up environment for Qt usage...
C:\windows\system32>cd C:\Python26\libs
C:\Python26\libs>pexports C:\Windows\SysWOW64\python26.dll >python26.def
C:\Python26\libs>dlltool --dllname python26.dll --def python26.def --output-lib libpython26.a

При использовании утилиты pexports путь до dll указывать нужно, иначе получим ошибку "pexports: python26.dll: could not load PE image".
Для dlltool это не обязательно. Путь у меня указан для Windows7. В WinXP библиотека лежит в system32.
Результатом этих шагов является библиотека импорта libpython26.a, которую и будем использовать для сборки PythonQt.

5) Скачиваем исходники PythonQt из SVN репозитория (дистрибутив весьма устарел):
 http://pythonqt.svn.sourceforge.net/viewvc/pythonqt/
и разархивируем в каталог C:\PythonQt2.1

6) Корректируем def-файлы в каталоге C:\PythonQt2.1\build.

python.prf - указываем в явном виде каталоги и файлы. Сюда же прописываем путь до исходников PythonQt (наверное, это не очень здорово, но зато работает под Windows7). Поскольку отладочной версии Питона в дистрибутиве нет, то для отладки и релиза используем одну и ту же библиотеку импорта:
Код:
  win32:INCLUDEPATH += c:/Python26/include C:/PythonQt2.1/src
  win32:LIBS += c:/Python26/libs/libpython26.a

common.prf - раскомментируем строку (хотя это можно и не делать, наверное - собирать будем в креаторе):
Код:
  CONFIG += debug_and_release build_all

PythonQt.prf - корректируем имя и расширение библиотеки:
Код:
  win32::LIBS += $$PWD/../lib/libPythonQt$${DEBUG_EXT}.a
PythonQt_QtAll.prf - то же самое:
Код:
  win32::LIBS += $$PWD/../lib/libPythonQt_QtAll$${DEBUG_EXT}.a

7) Запускаем Qt Creator и открываем проект C:\PythonQt2.1\PythonQt.pro. При открытии выбираем создание конфигурации одной отладочной и одной релизной сборки для профиля "Qt 4.8.1 for Desktop - MinGW (Qt SDK)", каталог сборки - C:\PythonQt2.1.
Сохраняем и выполняем qmake. Обратите внимание - будет создан каталог C:\PythonQt2.1\lib, там будут размещаться собранные библиотеки и исполняемые файлы примеров.

8 ) Корректируем исходники для обеспечения поддержки UTF-8 - заменяем toLatin1 на toAscii (см. http://sourceforge.net/projects/pythonqt/forums/forum/631392/topic/3805500 ):

 PythonQtScriptingConsole.cpp (PythonQtScriptingConsole::executeCode, 183):
    
Код:
p.setNewRef(PyRun_String(code.toAscii().data(), Py_single_input, dict, dict));

 PythonQt.cpp (PythonQt::evalScript, 727):
    
Код:
p.setNewRef(PyRun_String(script.toAscii().data(), start, dict, dict));

9) Выполняем команду "Собрать все". После завершения в каталоге C:\PythonQt2.1\lib будут размещены файлы библиотек (.a и .dll) и исполняемых файлов примеров.
Все.
  
« Последнее редактирование: Сентябрь 25, 2012, 20:43 от sergek » Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #10 : Декабрь 04, 2011, 20:12 »

Обновил предыдущее сообщение с описанием процесса сборки PythonQt с учетом нового релиза исходников библиотеки из репозитория http://pythonqt.svn.sourceforge.net/viewvc/pythonqt/.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
med_phisiker
Гость
« Ответ #11 : Май 26, 2012, 08:07 »

Здравствуйте, я тоже пытаюсь собрать PythonQt под Windows(у меня Windows 7 sp1 32). Версия qt sdk 1.2 . Python 2.6.6 .PythonQt2.0.1
Я действовал по инструкции sergek'a.
1) Скачал qt sdk 1.2 , установил его в C:\QtSDK. Mingw в нем уже был, но я решил поставить, скачал последнюю версию и установил в C:\MinGW.
2) Установил Python 2.6.6 из дистрибутива http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi в каталог по умолчанию C:\Python26
3) утилиты pexports у меня не было, скачал ее отдельно поставил в C:\pexports.
чтобы они опознавались в командной строке Qt , Madde Terminal добавил в системную переменую PATH адреса для pexports, mingw.
после этого в командной строке Qt , Madde Terminal, смог выполнить указанные команды:
C:\windows\system32>cd C:\Python26\libs
python26.dll у меня был расположен по следующему адресу C:/Windows/System32/python26.dll поэтому вторая строка изменилась следующим образом.
C:\Python26\libs> pexports C:/Windows/System32/python26.dll >python26.def
C:\Python26\libs> dlltool --dllname python26.dll --def python26.def --output-lib libpython26.a
4) Результатом этих шагов я получил библиотеку импорта libpython26.a
5)  Далее я скорректировал def-файлы в каталоге C:\PythonQt2.0.1\build указанным образом:

python.prf - указываем в явном виде каталоги и файлы. Сюда же прописываем путь до исходников PythonQt (наверное, это не очень здорово, но зато работает под Windows7). Поскольку отладочной версии питона в дистрибутиве нет, то для отладки и релиза используем одну и ту же библиотеку импорта:
Код:
 win32:INCLUDEPATH += c:/Python26/include C:/PythonQt2.0.1/src
  win32:LIBS += c:/Python26/libs/libpython26.a

common.prf - раскомментируем строку (хотя это можно и не делать, наверное - собирать будем в креаторе):
Код:
 CONFIG += debug_and_release build_all

PythonQt.prf - корректируем имя библиотеки:
Код:
 win32::LIBS += $$PWD/../lib/libPythonQt$${DEBUG_EXT}.a
PythonQt_QtAll.prf - то же самое:
Код:
 win32::LIBS += $$PWD/../lib/libPythonQt_QtAll$${DEBUG_EXT}.a
указал конфигурацию проэкта для qt:
Профиль Qt - Qt 4.7.4 for Desktop - MinGW 4.4 (Qt SDK);
Каталог сборки - C:\PythonQt2.0.1;
Запускаю собрать все. В процессе сборки появилось две ошибки:
1) C:\PythonQt2.0.1\src\PythonQtConversion.cpp:677: ошибка: invalid conversion from 'Py_UNICODE*' to 'const ushort*'
2) C:\PythonQt2.0.1\src\PythonQtConversion.cpp:1045: ошибка: invalid conversion from 'const ushort*' to 'const Py_UNICODE*'

От второй ошибки можно избавиться следующим способом:
в PythonQtConversion.cpp:1045 в PythonQtConv::QStringToPyObject()
найти
 #ifdef WIN32
    //return PyString_FromString(str.toLatin1().data());
    return PyUnicode_FromUnicode(str.utf16(), str.length());
нужно сделать так
 #ifdef WIN32
    return PyString_FromString(str.toLatin1().data());
   // return PyUnicode_FromUnicode(str.utf16(), str.length());
это решает вторую ошибку и убирает куча ворнингов.
Избавиться от первой мне так и не удалось помогите пожалуйста!!! Грустный
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #12 : Май 26, 2012, 11:43 »

Судя по всему, вы работаете с исходным дистрибутивом, который давно устарел. Для него нужно с делать явное преобразование типов:
  в файле PythonQtConversion.cpp из состава проекта src делаем явное преобразование типов в строках 677 и 1043:
    r = QString::fromUtf16((const ushort*)PyUnicode_AS_UNICODE(val));
  и
    return PyUnicode_FromUnicode((const Py_UNICODE*)str.utf16(), str.length());

Вам нужно скачать trunk с текущем релизом (221), там эта ошибка давно устранена:
http://pythonqt.svn.sourceforge.net/viewvc/pythonqt/trunk/
и на этой странице "Download GNU tarball".
Из каталога C:\PythonQt2.0.1 удаляете все содержимое и разархивируете туда полученный файл. Далее - по моим рекомендациям (правда, они - для 219 ревизии, но изменений не должно быть много).
« Последнее редактирование: Май 26, 2012, 21:13 от sergek » Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
med_phisiker
Гость
« Ответ #13 : Май 29, 2012, 08:55 »

Спасибо за помощь =). Скачал новый trunk с текущем релизом (221), но при сборке вылезла новая ошибка:
ошибка: C:/PythonQt2.0.1/build/../lib/PythonQt_d.a: No such file or directory

При выполнении qmake в pythonqt/lib как вы и писали появляются файлы библиотек: libPythonQt.a; libPythonQt.dll ; libPythonQt_d.dll ; libPythonQt_d.dll

Но почему Qt ищет PythonQt_d.a ? Могу ли я как то указать на то что нужно использовать libPythonQt.a; libPythonQt.dll ; libPythonQt_d.dll ; libPythonQt_d.dll, если я правильно понял именно они нужны для "собрать все"
« Последнее редактирование: Май 29, 2012, 09:28 от med_phisiker » Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #14 : Май 29, 2012, 09:28 »

Внимательнее посмотрите python.prf.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.06 секунд. Запросов: 22.