Форум сайта python.su
Собрал Boost под Python 3.1 и решил сделать модуль
Вот C++ код:
#include <boost/python.hpp>
using namespace boost::python;
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
def("greet", greet);
}
Traceback (most recent call last):
File "<string>", line 247, in run_nodebug
File "test.py", line 1, in <module>
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 30-31: invalid data
import hello_ext
print(hello_ext.greet())
Офлайн
Собственно, все так. И оно работает.
Что поломалось у вас - не знаю.
Как понимаю, boost собирали сами. Что говорять тесты?
Хотя бы примитивный
cd ./libs/python/example/quickstart
bjam –verbose-test test
Офлайн
Выполнил
Андрей СветловСоздался модуль extending.pyd, пробовал обратится к нему из питона, все отлично работает :D
cd ./libs/python/example/quickstart
bjam –verbose-test test
Офлайн
bjam -d+2 -n test
не будет ничего запускать, зато покажет, с какими опциями компилировалось/линковалось.
В MSVC, насколько помню, можно было из менюшек настройки посмотреть получившиеся command line flags.
Сравните и найдите три отличия.
Офлайн
Андрей СветловНе нашел там упоминания о файле extending.pyd, выполнил “bjam -n test” и там его отыскал :)
bjam -d+2 -n test
Отредактировано (Сен. 12, 2010 16:17:47)
Офлайн
Аттачи на этом форуме никогда не работали :)
Разница может быть в настройках компилятора, а не только линкера.
Первое, что приходит в голову - есть какой-то флажок касательно wchar_t.
Подробностей не помню.
Ваш проект мне ничего не даст - у меня linux, винды и студии нет, проверить не на чем.
Кстати, надеюсь вы используете VS 2008?
Офлайн
Андрей СветловЯ уже заметил что они не работают :)
Аттачи на этом форуме никогда не работали :)
Андрей СветловКонечно 2008 :D
Кстати, надеюсь вы используете VS 2008?
Андрей СветловБуду что то подобное искать :P
Первое, что приходит в голову - есть какой-то флажок касательно wchar_t.
Офлайн
Ппц, слов нету.., проблема была настолько банальна - в пути к модулю были русские буквы :lol: :lol: :lol:
Андрей Светлов, спасибо что помогал с решением проблемы :)
Отредактировано (Сен. 12, 2010 17:06:40)
Офлайн
Заработало - хорошо.
Только, кажется, проблема идентифицированна неверно. Все должно было пройти и с русскими буквами. Я когда-то проверял.
Единственное, чего питон не умеет - это работать с pyd названным по русски.
И не научится, наверное, никогда - точка входа это функция init<имя модуля>; кодировка исключительно ascii - по другому С/С++ не поймет.
Русский путь к файлу .pyd отрабатывает нормально.
Офлайн
Андрей Светлов, только что запустил модуль из англ папки - запустился, потом переименовал папку на русский - ошибка “UnicodeDecodeError: ‘utf8’ codec can't decode bytes in position 30-31: invalid data” =) Также работают и стандартные pyd.
Может быть такие проблемы только с виндой?
Отредактировано (Сен. 12, 2010 22:44:24)
Офлайн