Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ под Linux
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
1

Портировать модуль С++

15.01.2010, 20:09. Просмотров 2789. Ответов 22
Метки нет (Все метки)

Как портировать модуль на С++ по Linux? Такое вообще возможно?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2010, 20:09
Ответы с готовыми решениями:

Легко ли мне будет портировать консольную программу с WIN под NIX ?
Я новичек совсем . Учу С++ Попутно написал класс, который позволяет более удобно работать с...

Портировать модуль ABCChessObjects
люди кому не трудно прошу портировать модуль ABCChessObjects под pascalabc.net вот его оригинал...

Портировать с Action script на с#
уважаемые знатоки, а нельзя ли с экшен скрипта портировать на си# сетевой код? вот у меня тут...

Портировать код с C++ на Паскаль
Портировать код на паскаль string s; int i, g, h, j, k, x, y, d, z, *b,af,gaf; x = y = 0; ...

Портировать код из C++ в VBA
float f(float x) { float y; y = (pow((1-x),5)*exp(x*sin(x))); if (x=0) {y=0;} ...

22
Evg
Эксперт CАвтор FAQ
20034 / 7602 / 582
Регистрация: 30.03.2009
Сообщений: 21,230
Записей в блоге: 30
16.01.2010, 00:12 2
Что ты вкладываешь в понятие "портировать модуль"?
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
16.01.2010, 00:26  [ТС] 3
Вот есть модуль (Ну в Delphi это был Unit.pas тут unit.cpp) мне нужно, чтобы методы класса, объявленного внутри этого модуля можно было использовать в Линуксе. Ну я так понимаю, что мне сюда http://www.linux.org.ru/view-message.jsp?msgid=2159829
0
Evg
Эксперт CАвтор FAQ
20034 / 7602 / 582
Регистрация: 30.03.2009
Сообщений: 21,230
Записей в блоге: 30
16.01.2010, 00:34 4
Всё равно нифига не понял. Когда ты пишешь программу "hello world" (которая по сути тоже модуль), то берёшь его и компиляешь на любой системе. Если вопрос стоИт о том, как скомпилять, то наверное тебе сюда http://www.cyberforum.ru/faq/thread61845.html

Либо как-то более чётко напиши, в чём вопрос
1
16.01.2010, 00:34
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
16.01.2010, 00:39  [ТС] 5
Мне нужно написать на С++ кроссплатформенное приложение для windows и Linux. Я такого не писал ранее, поєтому как єто сделать я без понятия. Ну на VS2008 C++ я его написал, теперь надо всунуть это Линуксу. Если єто можно легко скомпилировать и там и там, то спасибо, буду читать.
0
Evg
Эксперт CАвтор FAQ
20034 / 7602 / 582
Регистрация: 30.03.2009
Сообщений: 21,230
Записей в блоге: 30
16.01.2010, 00:45 6
Если консольное приложение, то в теории должно встать с полпинка, если нету явно ОС-зависимых фрагментов (например, потоки в линухе и винде создаются по разному), в противном случае переписывать надо будет ручками (и процесс наврядли автоматизируется, особенно если программа неграмотно спланирована). Если тебе нужно gui'ёвые приложения, то с MSVS ты с полпинка не перенесёшь (ты таже на брланд с ходу не переведёшь, а там тоже под винду).

Может тебе имеет смысл посмотреть в сторону Qt http://www.cyberforum.ru/cpp-cross-platform/thread79698.html
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
16.01.2010, 00:55  [ТС] 7
Вот-вот. Туда я и смотрю. Кстати есть неплохая книженция. http://softdocs.net/books/bookprogra...-gui-na-s.html
Ну мне для начала надо консольное приложение. Как его с полпинка запустить? Если у меня стоит VMWare
0
Vourhey
Почетный модератор
6497 / 2272 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
16.01.2010, 00:57 8
vim + g++
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
16.01.2010, 20:43  [ТС] 9
Вышло. Круто. Ну хоть с консолью проблем нет в разных ОС Спасибо всем.

Добавлено через 19 часов 37 минут
Vourhey, может немного не в тему впрос, но:
1) Есть ли книги про кодинг на С++ под Линуксом.
2) Есть ли студия для Линукса ubuntu для С++ и потом его компиляции?
0
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
16.01.2010, 21:09 10
Цитата Сообщение от galileopro Посмотреть сообщение
1) Есть ли книги про кодинг на С++ под Линуксом.
С++ кроссплатформенный ЯП(как и Си)

Цитата Сообщение от galileopro Посмотреть сообщение
2) Есть ли студия для Линукса ubuntu для С++ и потом его компиляции?
тыща. KDevelop/QtCreator/Kate
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
17.01.2010, 05:28  [ТС] 11
Цитата Сообщение от Vourhey Посмотреть сообщение
vim + g++
Странно. Но раньше компилило в VMWare, а теперь я решил поставить Ubinitu на железо непосредственно (чтобы лучше с Линуксом познакомиться) и теперь он ничего не компилирует. Я набираю в терминале vim + g++ находясь в корне папки с файлом MyProga.cpp. Кстати судя по man gcc - сам компилятор в дистрибутиве установлен. Я вижу весь список его команд.
0
Evg
Эксперт CАвтор FAQ
20034 / 7602 / 582
Регистрация: 30.03.2009
Сообщений: 21,230
Записей в блоге: 30
17.01.2010, 10:48 12
В терминале не надо набирать "vim + g++". Это две разные проги "vim" - редактор. Наврядли по умолчанию ставится. "gcc" и "g++" - компиляторы. В убунте вроде бы по дефолту стоЯт. Но при этом надо установить "sudo apt-get install libc6-dev" т.к. по умолчанию не ставятся стандартные инклюды Си (stdio.h, ...)

Добавлено через 17 секунд
А на ядро ОС ты уже забил?
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
17.01.2010, 15:39  [ТС] 13
Цитата Сообщение от Evg Посмотреть сообщение
А на ядро ОС ты уже забил?
Я отнес пока то, что было: загрузчик и тот аналог ДОСа, а теперь нам должны по этому всему лекции начитать. Там как раз подробнее должны про прерывания и т. п. рассказывать, про многозадачность ну и вообще я хочу пока послушать это все. Так как самому все это раскапывать пока не хочется, так как это займет уйму времени. А потом мы будет это все доделывать. Там 12 лаб и первые из них - написать свой загрузочный сектор, стартануть с диска, с дискеты, передать управление ядру и вывести Привет мир, так что на ближайшие 3 лабы все готово. Вот там последняя - прочесть харды в нтфс - я так понимаю, что нам дадут готовый пример или книгу, рассылку, откуда брать код. Так как врядли многие из группы это сделают. Там 3-4 человека сделают, а остальные спишут - это не интересно. Так что пока я накапливаю опыт.
Цитата Сообщение от Evg Посмотреть сообщение
"gcc" и "g++" - компиляторы. В убунте вроде бы по дефолту стоЯт. Но при этом надо установить "sudo apt-get install libc6-dev" т.к. по умолчанию не ставятся стандартные инклюды Си (stdio.h, ...)
Я хочу подойти к этому вопросу системно, а не пытаться изобрести велосипед. Допустим есть несколько OpenSource проектов, там есть исходніе коді. Например этот http://www.codenet.ru/progr/os/
И тем более мы будем писать ОС одну на всю группу. Думаю разбирать с этим всем в обществе 17 человек + 2 преподавателя лучше, чем самому с книгами и гуглом)
Компилил так: gcc -c -o hello.o hello.c
gcc hello.o -o hello

Все компилится, но с библиотеками траблы: я подключил libc6 но оно все равно iostream не находит. Приходится копировать прямо в папку с проектом. Плохо єто. И еще мне очень нужен тип данных vector - а vector.h я не найду. И никак не могу настроить интернет. У меня обычный VPN PPTP.
0
RazorQ
585 / 352 / 15
Регистрация: 06.02.2009
Сообщений: 1,386
17.01.2010, 15:52 14
Цитата Сообщение от galileopro Посмотреть сообщение
Все компилится, но с библиотеками траблы: я подключил libc6 но оно все равно iostream не находит.
А запускаешь наверное так
Bash
1
gcc -o hello hello.cpp
Т.е. Cppешный исходник компилятором для Си. Попробуй так
C++
1
g++ -o hello hello.cpp
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
17.01.2010, 16:29  [ТС] 15
Вот это пытаюсь скомпилировать
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
#include "stdafx.h"
#include "stdlib.h"
#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
 
    template <class T> struct Stroka //строка графа
    {
    vector<T> row;
    string idrow;
    };
 
/*Будем считать наш граф взвешенным, тогда если две вершины не связаны, то будем ставить в ячейку этой матрицы "0"*/
    template <class T> struct Graf
    {
      vector<Stroka<T>> Matrix; //матрица графа
      vector<string> rowsName; //имена вершин графа
      int count; //размерность матрицы
    void Create(int size, vector<string> rN) //конструктор
    {
        count=size;
        Stroka<T> x;
        rowsName=rN;
        for(int i=0;i<count;i++)
        {
        for(int j=0;j<count;j++)
        x.row.push_back(7);
        x.idrow=rowsName[i];
        Matrix.push_back(x);
        }
    }
    void Create(int size) //конструктор без имён вершин
    {
        count=size;
        Stroka<T> x;
        for(int i=0;i<count;i++)
        {
        for(int j=0;j<count;j++)
        x.row.push_back(0);
        x.idrow="Default";
        Matrix.push_back(x);
        }
    }
    void printGraf() //вывести граф на печать
    {
        for(int i=0;i<count;i++)
        {
        for(int j=0;j< strlen(&Matrix[i].idrow[0]);j++)
            std::cout<<Matrix[i].idrow[j];
        std::cout<<" ";
        for(int j=0;j<count;j++)
            std::cout<<Matrix[i].row[j]<<" ";
        std::cout<<" "<<endl;
        }
    }
    void Free()
    {
    Matrix=null;
    rowsName=null;
    }
};
 
int main()
{
    Graf<double> d;
    string data[7]={"Melitopol", "Kiev", "Zvenigorod", "Volchansk", "Kupiansk", "Severodoneck", "Odessa"};
    vector<string> Names;
    for(int i=0;i<_countof(data);i++)
    {
        Names.push_back(data[i]);
    }
    d.Create(_countof(data),Names);
    printf("Hello,World!\n");
    d.printGraf();
    getchar();
    return 0;
}
Я поместил в папку с программой все нужные инклуды, но он на половину ругается. Взял я их из своего старого компилятора С++.
0
Evg
Эксперт CАвтор FAQ
20034 / 7602 / 582
Регистрация: 30.03.2009
Сообщений: 21,230
Записей в блоге: 30
17.01.2010, 17:26 16
Когда пишешь "на половину ругается", то ВСЕГДА пиши, кто ругается и как ругается. А главное - что запускаешь. Никто заниматься телепатией не будет. На http://codepad.org твой код выдаёт две ошибки:

Line 19: error: stdafx.h: No such file or directory
Line 17: error: 'Matrix' was not declared in this scope
compilation terminated due to -Wfatal-errors.

stdafx.h - это приблуда виндузовых компиляторов

Удали все свои файлы, которые ты хз откуда скопировал и запускай g++, а не gcc

Добавлено через 5 минут
Борландовскому компилятору конструкция vactor<Stroka<T>> тоже не нравится
1
galileopro
Пробующий
184 / 97 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
17.01.2010, 18:29  [ТС] 17
Цитата Сообщение от Evg Посмотреть сообщение
Борландовскому компилятору конструкция vactor<Stroka<T>> тоже не нравится
Студия точно такое компилирует. Могу выложить полностью проект с экзешниками вместе.
Цитата Сообщение от Evg Посмотреть сообщение
Удали все свои файлы, которые ты хз откуда скопировал и запускай g++, а не gcc
Он у меня не установлен. Я его скачал, но никак не могу установить. Причины:
1) я не могу установить єто через Интернет, так как не работает ВПН, и не устанавливаются
pptp-linux, network-manager-pptp
2) после sudo apt-get install g++ он говорит, не удалось найти пакет g
3) после sudo apt-get install gpp он говорит, не удалось найти пакет gpp
4) после sudo apt-get install build-essential он говорит, что у меня нет прав записи в какую-то директорию, возможно я не под root. Но я под root.

Добавлено через 5 минут
По умолчанию root аккаунт в Ubuntu отключен и пароля у root просто нет. Все административные задачи выполняются через sudo. По умолчанию право на выполнение sudo предоставлено первому пользователю, созданному при инсталляции. Все остальные по умолчанию - обычные пользователи.
Я все запускаю с правами суперпользователя. Что тут не так? На пакеты pptp-linux, network-manager-pptp и команду sudo apt-get install pptp-linux network-manager-pptpон говорит, что не удалось найти пакет pptp-linux, или (если скопировать установочный пакет в корневую директорию пользователя) нет прав записи в ...далее длинный путь..., возможно я не под root
galileopro@ubuntu:~$ cd MyInstall
bash: cd: MyInstall: No such file or directory
galileopro@ubuntu:~$ cd Myinstall
galileopro@ubuntu:~/Myinstall$ dir
1.cpp~ gcc-4.3.0 network-manager-pptp pptp-linux
g++ g++.deb network-manager-pptp.deb pptp-linux.deb
galileopro@ubuntu:~/Myinstall$ sudo apt-get install pptp-linux network-manager-pptp
[sudo] password for galileopro:
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
E: Не удалось найти пакет pptp-linux
galileopro@ubuntu:~/Myinstall$ apt-get install g++
E: Не удалось открыть файл блокировки /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?s
galileopro@ubuntu:~/Myinstall$ apt-get install build-essential
E: Не удалось открыть файл блокировки /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
galileopro@ubuntu:~/Myinstall$ apt-get install gpp
E: Не удалось открыть файл блокировки /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
galileopro@ubuntu:~/Myinstall$
0
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
17.01.2010, 21:39 18
Цитата Сообщение от galileopro Посмотреть сообщение
По умолчанию root аккаунт в Ubuntu отключен и пароля у root просто нет
а в каких дистрибутивах это есть?

Добавлено через 6 минут
если пароль root не установлен, выполнить это:
sudo passwd
1
Evg
Эксперт CАвтор FAQ
20034 / 7602 / 582
Регистрация: 30.03.2009
Сообщений: 21,230
Записей в блоге: 30
17.01.2010, 22:52 19
В общем, если ты инклюды типа vector перетащишь из другой системы, они работать не будут. Лучше в разделе про линукс (а не си++ для линукс) создай тему
1
niXman
Эксперт С++
3206 / 1455 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
18.01.2010, 01:55 20
Цитата Сообщение от Evg Посмотреть сообщение
Лучше в разделе про линукс (а не си++ для линукс) создай тему
а вопрос то в чем?
0
18.01.2010, 01:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2010, 01:55

Портировать программу на Linux
Проблема в следующем: нужно найти способ запустить программу написанную на VB.net с использованием...

Портировать код с С++ (void)
Есть DLL из нее получаем интерфейс с набором функций и методов. Есть описание функций на C++ ...

Портировать код из Python
Помогите, пожалуйста. Кто может переписать из Python в Pascal? #AVal - массив анализируемых...


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

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

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