Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> boost.python 
:(
    Опции темы
boostcoder
Дата 29.5.2012, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mrgloom @  29.5.2012,  16:03 Найти цитируемый пост)
-export-dynamic

что делает эта опция - я знаю.
но это же вы написали:
Цитата(mrgloom @  29.5.2012,  11:30 Найти цитируемый пост)
вроде бы решение  -E флаг для GCC

 smile 

потому я и спрашиваю, какое отношение имеет препроцессор к линковке?

PM WWW   Вверх
mrgloom
Дата 29.5.2012, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



ну никакого, я смотрел в каком то справочнике и там было -Е а в низу расшифровка -export-dynamic, видимо это была не расшифровка, а просто алфавитный указатель.

так это актуально для виндоус? или это относится только к .so файлам?
PM MAIL   Вверх
boostcoder
Дата 29.5.2012, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



хз-хз..
а проверить не судьба?
PM WWW   Вверх
mrgloom
Дата 30.5.2012, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



ну так я не знаю какой аналог для линкера VS(в линковке не особо разбираюсь), а на GCC конечно можно проверить, но у меня главный проект завязан на MFC и даже если я всё связанное с питоном выделю в dll, то я так понимаю всё равно будут проблемы при подключении к главному проекту.  


вообще я так понял, что когда пытаешься вызвать import socket из кода на c++, там внутри идет вызов _socket  для которого есть dll _socket.pyd и _socket.lib и они не находятся, я пробовал пихать _socket.lib прямо в проект VS, но ничего не выходит.

Это сообщение отредактировал(а) mrgloom - 30.5.2012, 09:53
PM MAIL   Вверх
mrgloom
Дата 30.5.2012, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



странно, не пойму что сделал, но теперь в релиз версии импорт .pyd идет нормально, зато падает на PyRun_SimpleFile, но только при попытке выполнения .py скрипта, который содержит ссылку на .pyd.
Цитата

PyRun_SimpleFile() crashes on Windows but not on Unix; why?¶
This is very sensitive to the compiler vendor, version and (perhaps) even options. If the FILE* structure in your embedding program isn’t the same as is assumed by the Python interpreter it won’t work.

The Python 1.5.* DLLs (python15.dll) are all compiled with MS VC++ 5.0 and with multithreading-DLL options (/MD).

If you can’t change compilers or flags, try using Py_RunSimpleString(). A trick to get it to run an arbitrary file is to construct a call to execfile() with the name of your file as argument.

Also note that you can not mix-and-match Debug and Release versions. If you wish to use the Debug Multithreaded DLL, then your module must have _d appended to the base name.

дебаг  версия не работает с .pyd файлами, хотя возможно это и не удивительно, т.к. это же с-шные длл-ки, наверно собранные в релиз версии.



Это сообщение отредактировал(а) mrgloom - 30.5.2012, 11:24
PM MAIL   Вверх
mrgloom
Дата 31.5.2012, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



решил писать обертку не для всех функций, а только для тех которые возвращают значение.

не пойму как сделать отступы
Код

if res < 0:
        print("Error: unable to connect")
        return


так не работает
Код

PyRun_SimpleString("if res < 0:\n"
        " print(\"Error: unable to connect\")\n"
        " return");

PM MAIL   Вверх
boostcoder
Дата 31.5.2012, 12:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



смотри пример в первом моем посте.
PM WWW   Вверх
mrgloom
Дата 31.5.2012, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



пытаюсь с помощью sprintf подменить параметры в скрипте.

Код

int sz= strlen("res = test.Connect('localhost', 8300)");
    char* str= new char[sz];
    char* s= "'localhost'";
    int port= 8301;
    sprintf(str,"res = test.Connect(%s, %i)",s,port);

    static const char *program = str;
    delete[] str;//тут пишет heap corruption


что не так?

Это сообщение отредактировал(а) mrgloom - 31.5.2012, 16:26
PM MAIL   Вверх
boostcoder
Дата 31.5.2012, 16:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



mrgloom, 
во-первых - ты что, решил в одной теме задать все интересующие тебя вопросы? правило: одна тема - один вопрос.
во-вторых - ты же на плюсах пишешь и в проекте у тебя используется буст. к чему эти извраты с сями?
Код

#include <iostream>
#include <string>
#include <boost/format.hpp>

int main() {
   const char* s = "'localhost'";
   int port= 8301;
   const std::string str = (boost::format("res = test.Connect(%1%, %2%)") % s % port).str();
   
   std::cout << str << std::endl;
}

http://liveworkspace.org/code/782a0449599b...c278ef60628e767

PM WWW   Вверх
mrgloom
Дата 1.6.2012, 09:30 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



хмм там скорее всего какой то сайд эффект от sprintf.

возник еще один вопрос, как контролировать выполнилась ли строчка кода или нет?
ну допустим, если разработчиком питон кода сделано так, что функция скажем возвращает 0 или 1 
в зависимости от того выполнилась или нет, то можно просто получать это возвращаемое значение.
а если это не предусмотрено? теортетически даже непонятно, чт ов консоль питона должно вывестись.
а если чего то не хватает, как у меня было с import _socket или еще какая ошибка?
тем более вообще не понятно можем ли мы как то отслеживать, что выводится в консоль питона.
PM MAIL   Вверх
Earnest
Дата 1.6.2012, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Модератор: Пожалуйста, один топик - один вопрос.
mrgloom, создай новую тему для нового вопроса.


--------------------
...
PM   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.