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

Скомпилировать проект - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 5.00
Shepard90
5 / 5 / 0
Регистрация: 18.10.2010
Сообщений: 140
15.07.2012, 10:57     Скомпилировать проект #1
Не знал в какую ветку кинуть.
Требуется помощь!
В общем имеется штук 10 исходников на С++ - все они представляют один проект.
Нужно все это дело откомпилировать именно в Linux.
Пока не могу понять в Linux или Windows это писалось - пробовал компилить (в линухе компиляция останавливается где-то внутри хедера Mpi.h, по-моему, точно не помню, при вызове Init, а в Visual Studio 2008 уже не могу сказать где - после нескольких попыток, где отладчик выводил много (десятки, а может и СОТНИ!!!) ошибок, сейчас просто пишет "не удается восстановить после предыдущих ошибок; остановка компиляции".
Библиотеки вроде все подключил. Может в Linux не все конечно.
От чего плясать вообще? По каким признакам определить хотя бы в какой ОС это писалось?
Выкладываю пару файлов на страницу
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <Glass.h>
#include <mpi.h>
#include <iostream>
 
int main(int argc, char* argv[]) {
 
    MPI_Init(&argc, &argv);
 
    ca::GlassFiles::Init(argc, argv);
    ca::Glass cag;
 
    cag.calculate();
 
    MPI_Finalize();
 
    return 0;
}
Glass.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
 * Glass.h
 *
 *  Created on: 02.12.2008
 *      Author: newmen
 */
 
#ifndef GLASS_H_
#define GLASS_H_
 
#include "GlassCleverCell.h"
#include "GlassFiles.h"
#include "functions.cpp"
#include <mpi.h>
#include <vector>
#include <iostream>
#include <fstream>
 
namespace ca {
 
using namespace std;
 
class Glass {
private:
    // системные переменные
    GlassGlassCleverCell** Cells; // рассчитываемые клетки
    std::vector<GlassGlassCleverCell*>** cNeighbours; // соседи
 
    // настройка мат. аппарата
    int Nx; // количество расчитываемых клеток по оси X
            // (должно быть кратно 4!) [безразм]
    int Ny; // количество расчитываемых клеток по оси Y [безразм]
    int showMinX, showMaxX; // минимальное, максимальное значение
                            // для отображаемого поля по оси X
    int showMinY, showMaxY; // минимальное, максимальное значение
                            // для отображаемого поля по оси Y
    int y_begin, y_end; // начальное и конечное число для итерации
                        // по Y - возникает необходимость, при разбиении
                        // поля на части, при параллельном вычислении
    float saveEveryTime; // сохранять в файл каждые ... раз
 
    // MPI
    int changeEveryStep; // частота обмена между процессами граничных ячеек
    int mpi_rank; // ранг - номер процесса, среди других
    int mpi_size; // количество процессов
    int mpi_width, mpi_height; // ширина и высота поля,
                            // в расчёте на общее количество процессов
    GlassGlassCleverCell *mpi_top_sendbuf, *mpi_bottom_sendbuf,
                        *mpi_left_sendbuf, *mpi_right_sendbuf,
                        *mpi_top_recvbuf, *mpi_bottom_recvbuf,
                        *mpi_left_recvbuf, *mpi_right_recvbuf,
                        *mpi_show_buf, *mpi_save_buf;
    int *mpi_fases_buf;
    MPI_Request *mpi_req;
    MPI_Status *mpi_stat;
 
    float h; // шаг по координате [м]
    float dt; // шаг по времени [сек]
    float m; // характеристический коэффициент параметра, характеризующего
            // дискретизацию пространства и времени (для концентрации) [безразм]
    float p; // характеристический коэффициент параметра, характеризующего
            // дискретизацию пространства и времени (для температуры) [безразм]
    float tNow; // текущее время [сек]
    int numsOfFases[3]; // количества частиц находящихся в каждой из фаз
 
    // настройка аппарата
    float tRepen; // время выдержки расплава [сек]
    int spacePosition; // количество возможных пространственных положений
    float kq; // коэффициент направленного роста [безразм]
    float kcompa1; // коэффициент условия перехода в комплекс [безразм]
    float kcompa2; // коэффициент условия перехода в комплекс [безразм]
    float kcompb1; // коэффициент условия перехода в комплекс [безразм]
    float kcompb2; // коэффициент условия перехода в комплекс [безразм]
 
    // всё что оносится к концентрации
    float C0[ELEM_NUMS]; // начальные концентрации [безразм]
    float D0[2][ELEM_NUMS]; // коэффициенты диффузии по каждому веществу
                            // (аморфная и кристаллическая фазы) [безразм]
    float E[2][ELEM_NUMS]; // энергии активации по каждому веществу
                        // (аморфная и кристаллическая фазы) [безразм]
    float kd; // коэффициент уменьшения диффузии (во сколько раз диффузия
            // меньше, в комплексной фазе, чем в аморфной) [безразм]
 
    // всё что относится к температуре
    float Tbegin; // начальная температура [град C]
    float Tend; // температура окончания процесса [град C]
    float Tcryst; // температура кристаллизации [град C]
    float Tglass; // температура стеклования [град C]
    float Tslab; // температура плит [град C]
    float Tk; // кинетическая температура образования кристалла [град C]
    float dT; // прирост температуры [град C]
 
    float q[ELEM_NUMS]; // кинетический коэффициент кристаллизации [безразм]
 
    float a0; // коэффициент температуропроводности в аморфной фазе [безразм]
    float ka1, ka2; // коэффициенты, отражающие изменение
                    // температуропроводности [безразм]
    float aslab; // коэффициент температуропроводности на границе [безразм]
 
public:
    Glass();
    virtual ~Glass();
 
    void calculate(); // запуск расчёта
 
private:
    void debugInfo(const std::string& mes);
 
    void varFile(); // чтение параметров из конфигурационного файла
 
    // вывод ошибки при открытии файла
    void fopenError(const char* filename, const char* message, const int& code);
 
    void init(); // начальная инициализация рассчитываемых массивов
    void changePhase(); // проверка фазового перехода, смена состояния
    void changeConcentrate(); // смена концентраций
    void changeTemperature(); // смена температур
};
 
}
#endif /* GLASS_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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
 * GlassGlassCleverCell.h
 *
 *  Created on: 02.01.2009
 *      Author: newmen
 */
 
#ifndef GLASSCLEVERCELL_H_
#define GLASSCLEVERCELL_H_
 
#include "GlassStructCell.h"
#include "consts.h"
#include <fstream>
#include <iostream>
#include <cmath>
 
namespace ca {
 
using namespace std;
 
class GlassGlassCleverCell {
public:
    class Error { };
 
    static float D0[3][ELEM_NUMS]; // начальные коэффициенты диффузии каждого
                                // вещества, для каждой из фаз
    static float E[3][ELEM_NUMS]; // энергии активации по каждому веществу,
                                // для каждой из фаз
    static float a0[ELEM_NUMS]; // начальные коэффициенты
                                // температуропроводности, для каждой из фаз
 
private:
    GlassStructCell Cell; // фаза, температура, концентрации...
    float q; // коэффициент направленного роста
    float a;
    float D[ELEM_NUMS];
 
    float CTemp[ELEM_NUMS]; // временные концентрации
    float TTemp; // временная температура
    bool TChange; // изменялась ли температура
 
public:
    GlassGlassCleverCell();
    virtual ~GlassGlassCleverCell();
 
    void write(ofstream& outf) const {
        outf.write((const char*)&Cell, sizeof(Cell));
    }
 
    static void setD0(const float D0[2][ELEM_NUMS], const float& Kd);
    static void setE(const float E[2][ELEM_NUMS]);
    static void setA0(const float& a0, const float& ka1, const float& ka2);
 
    Phase getPhase() const {
        return (Phase)Cell.F;
    }
 
    void setPhaseAt(const Phase& F) {
        Cell.F = (char)F;
 
        for (short i = 0; i < ELEM_NUMS; i++)
            D[i] = D0[i][F] * exp(-E[i][F] / (R * (Cell.T + T0)));
        a = a0[F];
        TChange = false;
    }
 
    void setPhase(const Phase& newF) {
        if (Cell.F == newF && !TChange) return;
        setPhaseAt(newF);
    }
 
    float getConcentrate(const short& num) const {
        return Cell.C[num];
    }
 
    void setConcentrate(const short& num, const float& val) {
        Cell.C[num] = CTemp[num] = val;
    }
 
 
    void incConcentrate(const short& num, const float& val) {
        CTemp[num] += val;
    }
 
    float getDiffusion(const short& num) const {
        return D[num];
    }
 
    void setDiffusion(const short& num, const float& val) {
        D[num] = val;
    }
 
    float getTemperature() const {
        return Cell.T;
    }
 
    void setTemperature(const float& val) {
        Cell.T = TTemp = val;
        TChange = true;
    }
 
    void incTemperature(const float& val) {
        TTemp += val;
        TChange = true;
    }
 
    float getA() const {
        return a;
    }
 
    void setA(const float& val) {
        a = val;
    }
 
    float getQ() const {
        return q;
    }
 
    void setQ(const float& val) {
        q = val;
    }
 
    void nextTimeStep() {
        for (short i = 0; i < ELEM_NUMS; i++) Cell.C[i] = CTemp[i];
        Cell.T = TTemp;
    }
};
 
}
#endif /* GLASSCLEVERCELL_H_ */
Надеюсь кто-нибудь взглянет...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2012, 10:57     Скомпилировать проект
Посмотрите здесь:

Помогите скомпилировать проект C++
Скомпилировать проект на Theards C++
C++ Скомпилировать
C++ Не получается скомпилировать проект в RAD Studio
Не могу скомпилировать C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2012, 16:26     Скомпилировать проект
Еще ссылки по теме:

C++ Как рекурсивно скомпилировать проект через командную строку?
Необходимо скомпилировать проект C++
C++ Как скопировать проект в другой проект для дальнейшей работы над новой версией (VS)?

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

Или воспользуйтесь поиском по форуму:
Simply me
 Аватар для Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 292
13.09.2012, 16:26     Скомпилировать проект #21
такую же ошибку выдает( пробовала сделать как здесь http://www.bezpravil.kz/ubuntu/mpi-v-ubuntu.html опять то же самое пишет(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
13.09.2012, 16:26     Скомпилировать проект
Ответ Создать тему
Опции темы

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