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

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Создаю библиотеку формата *.а  (Прочитано 17730 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #15 : Март 23, 2012, 13:24 »

Спасибо, за тапок в рыло!
Это была очень даже мягкая рекомендация.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
mutineer
Гость
« Ответ #16 : Март 23, 2012, 13:25 »

ну а что еще можно ответить на попытку вызова нестатической функции в виде MainWindow::plot_first(...); извне этого класса?
Записан
tiiL
Гость
« Ответ #17 : Март 23, 2012, 13:36 »

показали новичку что вы опытнее. а сказать как вызвать(сделать) функцию правильно это уже , извените, наверно не в вашей компетентности. Извените что вообще потревожил вас!
Записан
mutineer
Гость
« Ответ #18 : Март 23, 2012, 13:38 »

показали новичку что вы опытнее. а сказать как вызвать(сделать) функцию правильно это уже , извените, наверно не в вашей компетентности. Извените что вообще потревожил вас!

Знать, как вызывать функцию - обязанность новичка, и писать код без этого знания имхо пустая трата времени.
А чтобы узнать как это сделать правильно достаточно прочитать любую книгу по плюсам
Записан
Bepec
Гость
« Ответ #19 : Март 23, 2012, 14:07 »

Приходи ещё, ещё накидаем Улыбающийся
Записан
tiiL
Гость
« Ответ #20 : Март 23, 2012, 14:07 »

 MainWindow window(NULL);


n = window.fplot_first();

так надо вызывать? в таком виде компилируется собирается но при запуске ничего не происходит Грустный а при отладке так вообщ вылетает ошибка during startup program exited code 0x0000135
Записан
mutineer
Гость
« Ответ #21 : Март 23, 2012, 14:10 »

MainWindow window(NULL);


n = window.fplot_first();

так надо вызывать? в таком виде компилируется собирается но при запуске ничего не происходит Грустный а при отладке так вообщ вылетает ошибка during startup program exited code 0x0000135

А что должно было произойти? в main у тебя сплошные рассчеты, и вывод результатов в невидимое окно. window.show() покажет окно на экран
Записан
tiiL
Гость
« Ответ #22 : Март 23, 2012, 14:45 »

не могу выложить программу размер говорит большой(

а вот что пишит QT
Запускается C:\media\plot_fat\debug\plot_fat.exe...
C:\media\plot_fat\debug\plot_fat.exe завершился с кодом -1073741515
« Последнее редактирование: Март 23, 2012, 15:08 от tiiL » Записан
tiiL
Гость
« Ответ #23 : Март 29, 2012, 13:55 »

с выше изложенными проблемами разобрался... теперь эту библиотеку подключаю, к проекту...

вылезли вот такие ошибки:
Код:
../grathQWT/debug/libgrathQWT.a(mainwindow.o): In function `MainWindow':

C:\MyProjects\grathQWT/../../Qt/2010.05/qt/include/QtCore/../../src/corelib/arch/qatomic_i386.h:125: multiple definition of `MainWindow::MainWindow(QWidget*)'

debug/mainwindow.o:C:\MyProjects\fatigue/mainwindow.cpp:59: first defined here

../grathQWT/debug/libgrathQWT.a(mainwindow.o): In function `MainWindow':

C:\MyProjects\grathQWT/mainwindow.cpp:6: multiple definition of `MainWindow::MainWindow(QWidget*)'

debug/mainwindow.o:C:\MyProjects\fatigue/mainwindow.cpp:59: first defined here

../grathQWT/debug/libgrathQWT.a(mainwindow.o): In function `~MainWindow':

C:\MyProjects\grathQWT/mainwindow.cpp:53: multiple definition of `MainWindow::~MainWindow()'

debug/mainwindow.o:C:\MyProjects\fatigue/mainwindow.cpp:71: first defined here

../grathQWT/debug/libgrathQWT.a(mainwindow.o):C:\MyProjects\grathQWT/mainwindow.cpp:56: multiple definition of `non-virtual thunk to MainWindow::~MainWindow()'

debug/mainwindow.o:C:\MyProjects\fatigue/mainwindow.cpp:74: first defined here

../grathQWT/debug/libgrathQWT.a(mainwindow.o): In function `~MainWindow':

C:\MyProjects\grathQWT/mainwindow.cpp:53: multiple definition of `MainWindow::~MainWindow()'

debug/mainwindow.o:C:\MyProjects\fatigue/mainwindow.cpp:71: first defined here

../grathQWT/debug/libgrathQWT.a(mainwindow.o):C:\MyProjects\grathQWT/mainwindow.cpp:56: multiple definition of `non-virtual thunk to MainWindow::~MainWindow()'

debug/mainwindow.o:C:\MyProjects\fatigue/mainwindow.cpp:74: first defined here

../grathQWT/debug/libgrathQWT.a(mainwindow.o): In function `~MainWindow':

C:\MyProjects\grathQWT/mainwindow.cpp:53: multiple definition of `MainWindow::~MainWindow()'

debug/mainwindow.o:C:\MyProjects\fatigue/mainwindow.cpp:71: first defined here

collect2: ld returned 1 exit status
что интересно: когда библиотеку подключил более простому проекту
Код:
#include <QtGui/QApplication>
#include "dialog.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //Dialog w;
    //w.show();
    MainWindow Window;


        const int N = 13;
        int n;
        int numberCurve;

        double x[N+1]={1,2,3,6,8,9,11,12,13,14,18,21,22};
        //double x[N+1]={-10,-7,-6,-5,-4, -2,-1,0, 2,3,6,9,10};
        double y[N+1];
        double x2[N+1];
        double y2[N+1];
        double AxisXmax = 0;
        double AxisXmin = 0;
        double AxisYmax = 0;
        double AxisYmin = 0;
        double errorX;
        for(int k = 0; k < N; k++ )
        {

        y[k]=exp(x[k]); //первый график

        x2[k]= x[k]+ 2;
        y2[k]=x2[k]*x[k] + 3 * x2[k];  //exp(x2[k]); //второй график

    //определяем минимум макимум х и у
        if(x[k] > AxisXmax) AxisXmax = x[k];

        if(x[k] < AxisXmin) AxisXmin = x[k];

        if(y[k] < AxisYmin) AxisYmin = y[k];

        if(y[k] > AxisYmax) AxisYmax = y[k];

        if(x[k] < 0 ) errorX = x[k];
        }

        numberCurve = 1;

        n = Window.plot_first (AxisXmax,AxisXmin,AxisYmax,AxisYmin,errorX,x,y,N,numberCurve);  //вызов моей библиотечной функции
   //     if( n == 0 )
   //     {
   //         numberCurve++;
   //         for(int k=0; k < N; k++)
   //         {
   //         x[k]=x2[k];
   //         y[k]=y2[k];
   //         }
   //         n = plot_next(x,y,N,numberCurve);
   //     }
   Window.show ();


    return a.exec();
}
то всё работает, есть мысль:
 что приложение к которому идёт подключение библиотеки, основой является класс QMainWindow
Код:
class MainWindow : public QMainWindow

и моё библиотечное приложение идёт как
Код:
class MainWindow : public QMainWindow
{
    Q_OBJECT

и из-за этого множественное объявление, может быть такое или нет?
« Последнее редактирование: Март 29, 2012, 13:57 от Пантер » Записан
mutineer
Гость
« Ответ #24 : Март 29, 2012, 13:57 »

У тебя два раза объявляется класс MainWindow. Как ты думаешь, если класс объявлен два раза, может ли это быть причиной множественного объявления? Вот просто с точки зрения русского языка
Записан
tiiL
Гость
« Ответ #25 : Март 29, 2012, 14:02 »

Цитировать
тебя два раза объявляется класс MainWindow. Как ты думаешь, если класс объявлен два раза, может ли это быть причиной множественного объявления? Вот просто с точки зрения русского языка

ну значит можно решить проблему переименовав class в одном из приложений, правильная мысль?
Записан
mutineer
Гость
« Ответ #26 : Март 29, 2012, 14:07 »

именно
Записан
popper
Гость
« Ответ #27 : Март 29, 2012, 20:27 »

для самообразования можно ознакомиться с исходниками библиотеки qwt (благо она под рукой) и попытаться там отыскать наследника от QMainWindow. Если есть желание перенести часть функционала в библиотеку, то нужно хотя бы представлять, что это такое
Записан
tiiL
Гость
« Ответ #28 : Март 30, 2012, 12:41 »

подскажите пожалуйста, что означает эта строчка  x = NEWM ( n, double )?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



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

подозреваю, что этот макрос создаёт динамический массив типа double размера n, но тебе нужно просто найти его в коде (нажать ф2 на него в креаторе)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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