Форум программистов, компьютерный форум CyberForum.ru

вопросы связанные с темой "читай мат.часть" - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 5.00
TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
11.10.2011, 09:09     вопросы связанные с темой "читай мат.часть" #1
Здравствуйте, имется код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#define     fname  argv[1]         /* Archive file name   */
#define     sname  argv[2]         /* Specimen's name     */
int    main(int argc, char **argv)
{
    //int       argc;
    //char    *argv;
 
  //short item_sz ;
  int   fd ;
  int           i;
  char          *s;
  struct ifl    itf [] =
       {{"GGC", 0}, {"SGC", 0}, {"HEADL", 0} };
 double range;
 int flage = 0, sort_flage;
 char  string[256];
 int   term;
 float x;
 
  if ( argc < 2 )
  {
   fputs ( "bad spawn of gen processing", stderr );
    return 1;
    }
 
 
///* read items */
 
  int item_sz = sizeof ( itf ) / sizeof ( itf [0] );  /* Qty of items needed */
 
  if ( (fd = rd_open( fname)) < 0                /* get archive */
          || rd_fil(fd, &hdr)                   /* read file header */
          || rd_spec( fd, sname, &spec)          /* find&read specimen header */
     )
    return FATAL;
}
выдает вот такую ошибку:

E:\alexprojects\TPP/tpp_pr.cpp:91: undefined reference to `rd_open(char*)'

не пойму как решить, помогите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2011, 09:09     вопросы связанные с темой "читай мат.часть"
Посмотрите здесь:

C++ АТД список. Заменить меньшую часть списка символом "#"
C++ Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Необработанное исключение в "0x1027c9c7 (msvcr100d.dll)" в "gh.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefeee". C++
Программа, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова "ноль", "один",..."девять" C++
Вопросы по книге С. Бобровского "Самоучитель программирования на языке С++" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soft.creator
 Аватар для soft.creator
103 / 103 / 4
Регистрация: 17.10.2010
Сообщений: 283
11.10.2011, 09:29     вопросы связанные с темой "читай мат.часть" #2
Кэп сообщает, что функции rd_open, rd_fil и rd_spec неизвестны компилятору; нужно сделать #include файла, в котором они определены
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
11.10.2011, 09:34     вопросы связанные с темой "читай мат.часть" #3
видимо #include <fstream>
TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
11.10.2011, 09:52  [ТС]     вопросы связанные с темой "читай мат.часть" #4
#include <fstream> подключено. (((

переменные RD_open лежат в файле dos_arch.h

extern FD rd_open(char* filename); /* readonly */

вот так объявлено, я инклудю этот файл, не выложил этого чтобы не засорять лишним.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.10.2011, 11:05     вопросы связанные с темой "читай мат.часть" #5
Цитата Сообщение от TiiL Посмотреть сообщение
я инклудю этот файл, не выложил этого чтобы не засорять лишним.
Это не лишнее, это как-раз важный момент. Кстати, смешное слово - "инклудю"... Так вот, инклудить - так инклудить! Помимо заголовка с объявленными функциями должен быть ещё библиотечный файл, в котором эти самые функции реализованы. С этим как дело обстоит? И если есть-таки библиотеки, как подключаете?
TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
11.10.2011, 11:33  [ТС]     вопросы связанные с темой "читай мат.часть" #6
easybudda, Хорошо

Работаю в среде QT в файле про ссылки делаю на библиотеки:

INCLUDEPATH += ..\lib\
INCLUDEPATH += ..\include

Добавлено через 16 минут
dos_arch.h:
C
1
extern FD rd_open(char* filename); /* readonly */
dos_arch.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*****************************************************************
 *
 *      Function:       rd_open - open archive for reading
 *      Input:          file name
 *      Output:         -
 *      Return:         file descriptor or -1
 *      Side Effects:   check file stamp
 */
 
int             rd_open(char* name)
  {
  return rw_open(name, O_RDONLY);
  } 
 
/*--------------------------------------------------------------*/
 
int             rw_open(char* name, int attr)
  {
  int           fd;
  char          buf[4];
 
  if (  (fd = open(name, attr)) < 0
    ||  read(fd, buf, sizeof(buf)) != sizeof(buf)
    ||  strcmp(buf, stamp)
     )
    {
    close(fd);
    return -1;
    }
  return fd;
  }
а может быть проблема в том что например я инклудю h файл, а в нем на cpp нет ссылки, и из-за этого нет понимания у компилятора?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.10.2011, 11:44     вопросы связанные с темой "читай мат.часть" #7
Цитата Сообщение от TiiL Посмотреть сообщение
Работаю в среде QT
Цитата Сообщение от TiiL Посмотреть сообщение
а может быть проблема в том что например я инклудю h файл, а в нем на cpp нет ссылки
Директивой #include нужно заголовок подключать (dos_arch.h в вашем случае), мало того - эта же директива должна присутствовать в dos_arch.cpp, последний должен быть подключён к проекту, а в самом dos_arch.h должно быть
C
1
2
3
4
#ifndef _DOS_ARCH_H
#define _DOS_ARCH_H 1
extern FD rd_open(char* filename); /* readonly */
#endif
Почитайте FAQ местный, там эта тема подробно расписана...
TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
11.10.2011, 11:51  [ТС]     вопросы связанные с темой "читай мат.часть" #8
Да всё верно я так и подключил и в dos_arch.h:
C++
1
2
3
4
5
6
# ifndef        ARCH_H
# define        ARCH_H
extern FD  rd_open(char* filename);                     /* readonly */
# undef         FD
 
# endif         /* ARCH_H */
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.10.2011, 12:08     вопросы связанные с темой "читай мат.часть" #9
Цитата Сообщение от TiiL Посмотреть сообщение
Да всё верно
Цитата Сообщение от easybudda Посмотреть сообщение
эта же директива должна присутствовать в dos_arch.cpp, последний должен быть подключён к проекту
и с этим тоже?
TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
11.10.2011, 12:14  [ТС]     вопросы связанные с темой "читай мат.часть" #10
то есть надо написать #include <dos_arch.cpp> так чтоли?

или в dos_arch.cpp должна быть строка #include <dos_arch.h>, если так то она присутсвует.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.10.2011, 14:07     вопросы связанные с темой "читай мат.часть" #11
Цитата Сообщение от TiiL Посмотреть сообщение
или в dos_arch.cpp должна быть строка #include <dos_arch.h>, если так то она присутсвует.
Ну тогда осталось с последним разобраться - файл dos_arch.cpp точно к проекту подключён? Или просто в той же папке лежит?

Не по теме:

Да что же из вас всё клещами-то тянуть приходится?..

TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
12.10.2011, 09:22  [ТС]     вопросы связанные с темой "читай мат.часть" #12
немного разобрался в чем проблема:

библиотеку соберуют из множества файлов, в один файл libsamum.a, вот только как этот файл подключить к проекту вот это вопрос.

может быть вот так:
LIBS += -libsamum

Добавлено через 18 часов 41 минуту
Цитата Сообщение от TiiL Посмотреть сообщение
немного разобрался в чем проблема:

библиотеку соберуют из множества файлов, в один файл libsamum.a, вот только как этот файл подключить к проекту вот это вопрос.

может быть вот так:
LIBS += -libsamum
а вот так :
C++
1
LIBS += \path\libsamum.a
Добавлено через 24 минуты
Короче подключил всё что нужно всё комплиться но выдает вот такие ошибочки

E:\alexprojects\lib\debug\libsamum.a(dos_arch.o):dos_arch.cpp.data+0x8): multiple definition of `_fmode'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libmingw32.a(txtmode.o):txtmode.c.data+0x0): first defined here
Ребята, как быть? что это значит?
TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
17.10.2011, 11:41  [ТС]     вопросы связанные с темой "читай мат.часть" #13
Разобрался со своими ошибками...

Прошу помощи в соединении двух проектов...
1-ый tpp;
2-0й tpp_form:
форма диалогового окна, с которой берется имя файла вывода результата программы tpp, некое число для расчета программы tpp, запуск с программы tpp производиться с кнопки
void TPP::on_GoButton_clicked()
Language: cpp

?
мысль такая весь проект консольный tpp, который состоит из
1-ое:
#include объявление множество файлов библиотек(хейдеров)
2-ое:
объявлений переменных так понимаю глобальных например
#define fname argv[1] /* Archive file name */
#define sname argv[2] /* Specimen's name */
3-ие:
int main(char argc, char **argv)
{
"код программы"
}
Language: cpp

"код программы" поместить в tpp_form под функции int AppCons(void) и эту функцию вызывать по нажатию кнопки void TPP::on_GoButton_clicked(), тогда вопросы такие:
как быть char argc char **argv ?
и будут ли данные с формы занаситься в сам код программы для вычисления?
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
17.10.2011, 14:43     вопросы связанные с темой "читай мат.часть" #14
По QT можете почитать здесь: http://www.cyberforum.ru/qt/
TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
17.10.2011, 14:47  [ТС]     вопросы связанные с темой "читай мат.часть" #15
Да мне кажется здесь больше не c qt у меня проблема, а со знанием языка.

сделал вот такую весч:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// программа ТРР
void  tpi_tppf (void);
 
#define     fname  argv[1]         /* Archive file name   */
#define     sname  argv[2]         /* Specimen's name     */
//# define     tmp_f  argv[3]         /* Temporary file name */
 
HEADL        head;                   /* headline data       */
 
ZA_FIL  hdr;
ZA_SPEC spec;
  struct item_GGC   gendata;                    /* general data */
  struct item_SGC   specdata;                   /* specimen's data */
  struct calc_GGC   calcdata;                   /* calculated data */
 
FILE        *df;                    /* output   */
 
RFCt0       tpp;            /* TPP data */
RFCf0   fail;           /* Failue data */
RFCr0   raindata;       /* 'rainflow' data */
char    fail_name [ IDSZ ] = "RFCf0",
        rain_name [ IDSZ ] = "RFCr0",
        tpp_name  [ IDSZ ] = "RFCt0";
 
 
void TPP::on_GoButton_clicked(int argc, char **argv)
{
    {
 
    int   fd ;
    int           i;
    char          *s;
    struct ifl    itf [] =
         {{"GGC", 0}, {"SGC", 0}, {"HEADL", 0} };
   double range;
   int flage = 0, sort_flage;
   char  string[256];
   int   term;
   float x;
 
    if ( argc < 2 )
    {
     fputs ( "bad spawn of gen processing", stderr );
      return 1;
      }
 
 
  ///* read items */
 
    int item_sz = sizeof ( itf ) / sizeof ( itf [0] );  /* Qty of items needed */
 
    if ( (fd = rd_open( fname)) < 0                /* get archive */
            || rd_fil(fd, &hdr)                   /* read file header */
            || rd_spec( fd, sname, &spec)          /* find&read specimen header */
       )
      return FATAL;
выдает ошибки :
dialog.cpp: In member function 'void TPP::on_GoButton_clicked(int, char**)':

dialog.cpp:119: error: return-statement with a value, in function returning 'void'
и т.д. одни и теже ошибки по всему телу...

программа отдельно более именее работает. но когда соединяю.. то вот такие вещи
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
17.10.2011, 17:47     вопросы связанные с темой "читай мат.часть" #16
Цитата Сообщение от TiiL Посмотреть сообщение
dialog.cpp: In member function 'void TPP::on_GoButton_clicked(int, char**)':
dialog.cpp:119: error: return-statement with a value, in function returning 'void'
Функция, объявленная, как void, не может возвращать значения, а у Вас:

Цитата Сообщение от TiiL Посмотреть сообщение
C++
1
2
3
if ( argc < 2 ){
//...
return 1;
Вот и не компилируется...
TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
18.10.2011, 09:25  [ТС]     вопросы связанные с темой "читай мат.часть" #17
easybudda, Спасибо за неравнодушие. Проблему решил, просто перенеся данную часть кода под main(int argc, char *argv)

Задача такая:
из некого большого приложения через консоль запускается моя программа.
то есть в консоль записывается "имя.exe" "архив данных".sar и "название образца, лежащего в этом архиве".
я так понима в argc помещается "имя.exe" - c этим всё понятно.
в argv[1] argv[2] соотвественно архив и имя образца. Вопрос как argv[1] argv[2] поместить в fname и sname используемые под функции, находящейся в том же самом проекте, но в не в main.cpp, а в dialog.cpp? буду очень признательно, а пока читаю мат. часть. моджет что нарою.
rrrFer
Заблокирован
18.10.2011, 09:31     вопросы связанные с темой "читай мат.часть" #18
Вопрос как argv[1] argv[2] поместить в fname и sname используемые под функции, находящейся в том же самом проекте, но в не в main.cpp, а в dialog.cpp?
очевидно, передать argv и argc в качестве параметров функции ил dialog.cpp
TiiL
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 17
18.10.2011, 09:42  [ТС]     вопросы связанные с темой "читай мат.часть" #19
rrrFer, у меня эти параметры работают под функции void on_GoButton_clicked();подскажи как это в качестве парметров?

при таком void TPP::on_GoButton_clicked(int argc, char **argv), у меня кнопка прекращала свою работу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2011, 15:20     вопросы связанные с темой "читай мат.часть"
Еще ссылки по теме:

Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки C++
Необработанное исключение в "0x0fc1d484 (msvcr100d.dll)" в "1.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00aee0af" C++
C++ Курсовой проект с темой "Локальные и глобальные переменные. Правила видимости переменных в С++"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
18.10.2011, 15:20     вопросы связанные с темой "читай мат.часть" #20
Есть вопрос. По поводу: Using namespace std, который употребляется либо как директива, либо без директивы, но тогда придётся прописывать: std::.......
На форуме кто-то отвечал в одной из тем, зачем мол данная директива, когда есть в коде такая-то функция. Можете ли объяснить данную ситуацию, в каком случае необходимо побрезговать пространством имён?
Yandex
Объявления
18.10.2011, 15:20     вопросы связанные с темой "читай мат.часть"
Ответ Создать тему
Опции темы

Текущее время: 04:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru