Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 05.09.2014
Сообщений: 92
1

Не могу запустить программу (make)

03.03.2020, 17:09. Показов 1042. Ответов 11
Метки нет (Все метки)

Здравствуйте!
Уже второй день бьюсь с непонятной для меня проблемой.

Есть make-файл
Код
CC=g++
OBJECTS= objects.o main.o

all: $(OBJECTS)
	$(CC) -o main $(OBJECTS)

main.o: main.cc
	$(CC) -c main.cc

objects.o: objects.cc objects.h
	$(CC) -c objects.cc

clean:
	rm $(OBJECTS)
Сами файлы

objects.h:

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
#ifndef OBJECTS
#define OBJECTS
 
#include <vector>
#include <iostream>
using namespace std;
 
class point
{
friend class fisher;
friend float zfunction(point);
private:
    float x[2];
public:
    point();
};
 
float zfunction(point t)                   
{
    float fun=0.0;
    int ii;
    for (ii=0; ii<2; ii++)
        fun += t.x[ii] * t.x[ii];
    return -fun;
}
 
class fisher
{
    friend class point;
private:
    point position;                
    float f;                       
    vector <point> steps;
public:
    fisher (float ffxy=0) : f(ffxy) {};
    fisher (point initpoint) : position(initpoint) {f=zfunction(initpoint);};
};
 
#endif


objects.cc:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "objects.h"
#include <math.h>
 
point::point()
{
    int i;
    for (i=0; i<xr_temp; i++)
        x[i]=0;
    for (i=0; i<xr_temp; i++)
        cout << x[i] << "\t";
    cout << endl;
}


programsteps.h

C++
1
2
3
4
5
6
#ifndef PROGRAMSTEPS
#define PROGRAMSTEPS
 
#include "objects.h"
 
#endif


programsteps.cc:

C++
1
2
#include <math.h>
#include "programsteps.h"



main.cc:

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
#include <fstream>
#include "objects.h"
#include "parametrs"
using namespace std;
 
vector <fisher> fishers;                              
 
void init()
{
    float temppoint[2];
    int temp=0, i;
    float h=Gd;                                          
    int gridx[2];
    for (i=0; i<xr; i++)
        gridx[i]=(int)(xicemax-xicemin)/Gd;
    while (temp<S)
    {
        for (i=0; i<xr; i++)
            temppoint[i]=xicemin+rand()%(gridx[i]-1)*h+h/2;
        cout << "OK" << endl;
        temp++;
    }
    return;
}
 
 
int main()
{
    fstream fresults("results.txt");                          
    string tempstring;                                   
    int t=0;                                            
    int i, j, k;                                           
    float d;
    init();
 
fresults.close();
return 0;
}
Файл параметров parametrs:

C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef PARAMETRS
#define PARAMETRS
 
int    xr=2;   
//... другие параметры
float xicemin=-10;   
float xicemax=10;
float yicemin=-10;
float yicemax=10;
 
#endif
При запуске выдается ошибка:

Bash
1
2
3
4
5
6
7
8
9
10
~bash/$ make
g++ -c objects.cc
g++ -c main.cc
g++ -o main objects.o main.o
duplicate symbol __Z9zfunction5point in:
    objects.o
    main.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [all] Error 1
Откуда дублиты??? программу уже сократил до минимума, все равно ошибка...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2020, 17:09
Ответы с готовыми решениями:

Не могу запустить make: No rule to make target
Любой вызов make возвращает make: *** No rule to make target при запуске ./configure выводит...

Как запустить make-file по имени?
Как запустить make-file по имени?

Не могу запустить программу
Всем привет,пожалуйста помогите не могу завести программу уже не знаю что и делать выходит...

Не могу запустить программу
Привет всем. Я - начинающий программист. И хотел бы задать вам вопрос по поводу компиляции...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
11
Модератор
Эксперт CЭксперт С++
4400 / 3969 / 737
Регистрация: 07.10.2015
Сообщений: 8,235
03.03.2020, 17:20 2
Лучший ответ Сообщение было отмечено студ как решение

Решение

студ, файл objects.h инклюдится и в main.cc, и в objects.cc.
А в этой h-ке реализация метода float zfunction(point t)
О чем и говорит компилятор
Перенесите метод float zfunction(point t) в objects.cc
3
0 / 0 / 1
Регистрация: 05.09.2014
Сообщений: 92
03.03.2020, 18:17  [ТС] 3
Спасибо! Действительно глупейшая ошибка...

Добавлено через 23 минуты
А можно тогда еще вопрос по этой структуре. Нужно передать во все файлы общий набор параметров "parametrs", при этом его элементы могут быть использованы как в заголовочниках, так и в .сс файлах.
Как это сделать по уму? Тоже при всевозможных вариантах получаю переопределение переменных...
0
Комп_Оратор)
Эксперт по математике/физике
8669 / 4383 / 596
Регистрация: 04.12.2011
Сообщений: 13,112
Записей в блоге: 16
03.03.2020, 18:20 4
Цитата Сообщение от студ Посмотреть сообщение
Нужно передать во все файлы общий набор параметров "parametrs", при этом его элементы могут быть использованы как в заголовочниках, так и в .сс файлах.
Хидер не нужно в хидер инклудить (кроме слочаев когда иначе никак). Нормальный путь собрать константы в одном заголовочнике и вставлять его во все реализации.
0
бах-бах и в продакшен!
2622 / 1383 / 487
Регистрация: 23.09.2014
Сообщений: 4,229
Записей в блоге: 4
03.03.2020, 18:43 5
Цитата Сообщение от liv Посмотреть сообщение
Перенесите метод float zfunction(point t) в objects.cc
не обязательно,
достаточно дописать его так:
C++
1
2
3
4
/// objects.h:
inline float zfunction(point t) 
{
    ...
1
0 / 0 / 1
Регистрация: 05.09.2014
Сообщений: 92
03.03.2020, 18:44  [ТС] 6
Цитата Сообщение от IGPIGP Посмотреть сообщение
Хидер не нужно в хидер инклудить (кроме слочаев когда иначе никак).
А если в одном хедере классы (то есть объекты), а в другом действия, в том числе над обетами класса - как быть?


Цитата Сообщение от IGPIGP Посмотреть сообщение
Нормальный путь собрать константы в одном заголовочнике и вставлять его во все реализации.
так у меня примерно так и есть, только файл не parametrs.h, а просто paramrtrs.
Я подключал его к файлам .cc, а при сборке с шейном, они дают двойное дублирование
0
14121 / 7582 / 1802
Регистрация: 30.01.2014
Сообщений: 12,684
03.03.2020, 18:49 7
студ, https://www.youtube.com/watch?v=G_jcBrrYPAs
2
бах-бах и в продакшен!
2622 / 1383 / 487
Регистрация: 23.09.2014
Сообщений: 4,229
Записей в блоге: 4
03.03.2020, 18:56 8
DrOffset, от этого чувака я наконец то узнал зачем нужны анонимные неймспейсы
1
14121 / 7582 / 1802
Регистрация: 30.01.2014
Сообщений: 12,684
03.03.2020, 19:07 9
XLAT, лучше поздно, чем никогда.
1
бах-бах и в продакшен!
2622 / 1383 / 487
Регистрация: 23.09.2014
Сообщений: 4,229
Записей в блоге: 4
03.03.2020, 19:43 10
Цитата Сообщение от DrOffset Посмотреть сообщение
лучше поздно, чем никогда.
неа, не так:
дорога ложка к обеду,
просто у меня не было, увы, таких больших программ, которые надо было бы писать толпою.
0
Модератор
Эксперт CЭксперт С++
4400 / 3969 / 737
Регистрация: 07.10.2015
Сообщений: 8,235
03.03.2020, 20:36 11
DrOffset, полезное видео. Кое-что узнал для себя...
0
0 / 0 / 1
Регистрация: 05.09.2014
Сообщений: 92
04.03.2020, 08:40  [ТС] 12
Цитата Сообщение от DrOffset Посмотреть сообщение
спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2020, 08:40

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Не могу запустить программу!
Всех Приветствую Уважаемые Программисты! Совсем недавно наткнулся на программу в гитхабе:...

Не могу запустить программу
static void Main(string args) { double A; ...

не могу запустить программу
Ребята помогите!!!! никак не могу запустить программу все время ругaется на &quot;global.h&quot; #include...

Не могу запустить программу
нужно найти ошибку местонахождения объекта в любой точке через теорему Пифагора % 2019 ноябрь 1...

не могу запустить программу
Ребята! Helps! есть код программы с реализацией пользовательского интерфейса, но запустить не...

Не могу запустить программу
Знакомый программист помог мне в учебе и написал программу, отправив мне ее в текстовом документе....


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.