Перейти к содержанию

Max1987

Members
  • Постов

    19
  • Зарегистрирован

  • Посещение

    Никогда

Достижения Max1987

  1. Привет всем! Ситуация такая: есть проект на QT. Есть библиотека(mathprov.so) в которой содержится следующее: //libs.h #ifndef MYLIBS_H #define MYLIBS_H #ifdef Q_WS_WIN # define EXPORT __declspec(dllexport) #else # define EXPORT #endif void __attribute__ ((constructor)) initialize(void); void __attribute__ ((destructor)) finalize(void); #endif //mathprov.h #ifndef MATHPROV_H #define MATHPROV_H #include "../libs.h" class QWidget; class PartTypeDialog; QWidget* parent; PartTypeDialog* partTypeDialog; extern "C" { EXPORT void setParentWidget(QWidget* p); EXPORT QWidget* getPartTypeDialog(); } #endif //mathprov.cpp void initialize() { partTypeDialog = 0; } void finalize() { } QWidget* getPartTypeDialog() { if (partTypeDialog == 0) partTypeDialog = new PartTypeDialog(parent); return (QWidget*)partTypeDialog; } void setParentWidget(QWidget* p) { parent = p; } PartTypeDialog это некий наследник QWidget. Далее основная программа: //CourseWindow.h class CourseWindow : public QMainWindow { <...> QLibrary* libMathProv; QWorkspace* ws; }; //coursewindow.cpp CourseWindow::CourseWindow(QWidget *parent, const char *name) : QMainWindow(parent, name), libMathProv(0) { <...> ws = new QWorkspace( <...> ); ws->setScrollBarsEnabled( TRUE ); connect(ws, SIGNAL(windowActivated(QWidget*)), this, SLOT(ws_windowActivated(QWidget* ))); } void CourseWindow::ws_windowActivated ( QWidget * w ) { if (w == 0) //unload library libMathProv->unload(); } void CourseWindow::somefunc() { <...> lib = new QLibrary("mathprov"); lib->setAutoUnload(false); setParent = (psetparentfunc)lib->resolve( "setParentWidget" ); getDialog = (pgetdialogfunc)lib->resolve("getPartTypeDialog"); setParent(ws); getDialog()->show(); } Ошибка сегментации возникает когда закрываешь окно(PartTypeDialog) и предком является QWorkspace. А если выйти из моей проги не закрывая PartTypeDialog, или вместо PartTypeDialog использовать любой стандартный QT-шный класс(наследник QWidget), то ошибки не происходит. Вы можете объяснить такое явление??? Если даже PartTypeDialog выглядит так: class PartTypeDialog : public QWidget { Q_OBJECT public: PartTypeDialog(QWidget *parent = 0, const char *name = 0): QWidget(parent, name) }; -------- Заранее примного благодарен.
  2. Цитата: а где написанно, что их можно использовать в динамических библиотеках для windows? gcc да, но виндовый линкер имеет для этого специальные флаги. Я использую gcc для Windows(MinGW)
  3. Есть проблема! Пусть существует некий проект библиотеки. Я создал некий файльчик mylibs_global.h: #ifndef MYLIBS_GLOBAL_H #define MYLIBS_GLOBAL_H #ifdef Q_WS_WIN # define EXPORT __declspec(dllexport) #else # define EXPORT #endif void __attribute__ ((constructor)) initialize(void); void __attribute__ ((destructor)) finalize(void); #endif Этот файльчик прикручен к моему проекту. В исходниках я уже объявил функции initialize(void) и finalize(void), там выполняется некий код. Дело в том что в Линухе эти функции выполняются по своему прямому назначению - т.е. Выполняются после загрузки и перед выгрузкой библиотеки, в винде они просто игнорируються. В чем проблема?
  4. Здравствуйте! У меня есть вопрос. *.DLL и *.so это одно и тоже??? Дайте плз. пример как создать свою разделяемую библиотеку в линукс. И проясните как сделать так: у меня есть/будет некий проект на QT. Мне надо чтобы он использовал разделяемые библиотеки в Linux и DLL в Виндовс. Можно ли так сделать чтобы один и тот же исходный код компилировал ДЛЛ'ки в виндовс, и SO'шники в линукс? Заранее Спасибо.
  5. Жаль что у меня Qt.3x Такого класса у меня нет Придется наверное ждать заказанного диска с SUSE10.1, там наверняка есть.
  6. ОЙ! И тут я наткнулся в доках на это: ...QSqlSelectCursor is read-only and does not support INSERT, UPDATE or DELETE operations. А как быть, есть ли какие обходные варианты???
  7. Незнаю, и так пробовал. Qt меня тупо проигнорировал: QSqlSelectCursor* cdCursor = new QSqlSelectCursor( "select *, date_to-date_from from cd where " "artistid=" + QString::number(artistId) ); cdTable = new QDataTable( cdCursor, true, splitter ); cdTable->setAutoEdit(true); cdTable->refresh();
  8. Ну если по-русски то таблицу(QDataTable) при моем коде можно только просматривать, но нельзя редактировать. Мне нужно чтобы ее можно было редактировать.
  9. Доброо времени суток! Есть вопрос - Как создать вычисляемое поле, если у меня есть MySQL + QDataTable. Надо чтобы таблицу можно было редактировать и чтоб в ней отображалось вычисляемое поле(например выч.поле=текущая дата - начальная дата). Я надеюсь это реально сделать? Вот почему-то если таким способом, редактировать таблицу не получается: QSqlSelectCursor* cdCursor = new QSqlSelectCursor( "select *, date_to-date_from from cd where artistid=" + QString::number(artistId) ); cdTable = new QDataTable( cdCursor, true, splitter ); т.е. онаотобрадается в режиме ReadOnly. Мне необходимо Read/Write
  10. Ну и выполнил я этот sax2 -m 0=nvidia и лучше не стало
  11. Max1987

    Xgl и SUSE10 Eval. Help!

    Люди, кто-нить пробовал ставить себе XGL? Сегодня поставил себе, вот это штука, охренеть! Там такая физика обалдеть. Окошки тянешь они растягиваются, сворачиваешь они сжимаються, между раб. столами переход сделан как 3d-куб который плавно переворачивается, прозрачные панели, обалдеть! Но сначала как я поставил у меня все тормозило ужас даже с compiz. Поставил свежий NVidia драйвер 8756(до этого стоял тот который по умолчанию в SUSE10), переустановил xGl и все летает! Даже с такими примочками. Одно но: как теперь заставить работать 3d-игры и фильмы. Запуск фильма и икса слетает, игры выдают ошибку что 3d Hardware support not avaiable. Что нужно подкрутить??? У меня система SUSE10. И еще вопрос: при старте вот этих операций: compiz --replace decoration move resize place minimize & gnome-window-decorator & и потом при свертывании окон окна не свертываются в панель а уходят куда-то в никуда. Как это исправить?
  12. Мне удалось решить проблему так: 1) Я переустановил систему (попробуйте сначала без переустановки) 2) Yast -> System -> System services -> Экспертный режим, в выпадающем списке выбери '3: полный многопользовательский с сетью'. Незнаю поможет ли вам, но у меня вся фигня заключалась именно в этом, после этой установки у меня все проблемы сняло.
  13. При загрузки пишется сообщение (при старте скрипта alsasound) no soundcards found. Звук конечно не работает. Мои варианты решения проблемы такие: 1) Войти сначала из под user'а, затем root, после опять user. Тогда звук вдруг появляется 2) войти в /sbin/yast2 sound => Other => громкость => дальше => готово. Звук начинает работать. Подскажите пожалуйста где искать решения проблемы. И вопрос на засыпку: Как сделать чтобы работало midi. Моя карта SBLive! Value. С помощью yast'а я загрузил звуковые фонты с моего диска с дровами. Конфигурация /etc/sysconfig/sound такая: LOAD_SEQUENCER="yes" SOUNDFONT_FILES="/usr/share/sfbank/creative/default.sf2" LOAD_OSS_EMUL_MODULES="yes" Захожу в kmid открываю midi файл, нажимаю play и ничего не слышу.
  14. За совет конечно спасибо, помогло. Но ведь не единым mplayer'ом мне теперь смотреть видео. А кроме него ничего не работает. В мастере таких проблем небыло. Может найдутся еще какие-нибудь идеи?
  15. Привет всем! Я тут уже писал что у меня не работал звук: http://www.linux.ru/forum/index.php?t=msg&goto=310039&am p;rid=2610&S=1b2223f0f30c088ca001a65dc74c31a3#msg_310039 С ним я уже справился. Но вот оказывается у меня не работает еще и видео. Причем любого формата. Например через xine: The stream '/mnt/media/Music/Video/1.avi' use an unsupported codec: Video Codec: ISO-MPEG4/OpenDivX(DIVX) Кодеки лежат в /usr/lib/win32, которые с успехом работали в альт мастер 2.3, 2.4
×
×
  • Создать...