Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 2, 2007 20:17:44

niro
От:
Зарегистрирован: 2006-10-04
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

[c++] линковка объектный файлов

Вот пытаюсь собрать
1.cpp

#include "2.cpp"                                                                
int main(){
test();
return 0;
}
2.cpp
#include <iostream>
void test(){
std::cout <<"test";
}
собираю так:
g++ *.cpp -c
g++ *.o -o out
в итоге получаю ошибку:
2.o: In function `test()':
2.cpp:(.text+0x72): multiple definition of `test()'
1.o:1.cpp:(.text+0x72): first defined here
collect2: выполнение ld завершилось с кодом возврата 1
гугл не помогает. вобщем проблема появилась из-за того, что где то писалось, что таким образом можно ускорить процесс сборки приложения при его разработке. во втором файле включается iostream но форум не меняет знаки “<” “>” .



Отредактировано (Ноя. 2, 2007 20:19:20)

Офлайн

#2 Ноя. 2, 2007 22:45:52

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

[c++] линковка объектный файлов

niro
#include “2.cpp”
забавно, файлы релизации(*.cpp) таким образом не подключают.
Нужно подключить iostream в каждом из *.cpp файлов, если он там нужен. в файле 1.cpp он не нужен совсем. следовательно #include оттуда нужно убрать вообще.
niro
вобщем проблема появилась из-за того, что где то писалось, что таким образом можно ускорить процесс сборки приложения при его разработке.
явно это не тот случай.



Офлайн

#3 Ноя. 3, 2007 00:51:57

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

[c++] линковка объектный файлов

Камрад niro.
Выложите где-нибудь ваши исходники целиком. Или переправьте на мыло.
И я их скомпилю - и при этом объясню, что было не так.
Иначе - гадание по кофейной гуще



Офлайн

#4 Ноя. 3, 2007 12:28:01

niro
От:
Зарегистрирован: 2006-10-04
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

[c++] линковка объектный файлов

собственно это все.
может есть какие либо доки, которые расписывают про компиляцию нескольких файлов



Отредактировано (Ноя. 3, 2007 12:33:09)

Офлайн

#5 Ноя. 3, 2007 12:43:50

niro
От:
Зарегистрирован: 2006-10-04
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

[c++] линковка объектный файлов

решил : g++ *.o -o out -Xlinker -zmuldefs



Офлайн

#6 Ноя. 3, 2007 15:22:37

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

[c++] линковка объектный файлов

niro
тогда почему не так?
1.cpp

#include "2.hpp"                                                                
int main(){
test();
return 0;
}
2.hpp
#include &lt;iostream&gt;
void test();
2.cpp
#include "2.hpp"
void test(){
std::cout <<"test";
}
Или хотелось чего-то еще?



Отредактировано (Ноя. 3, 2007 15:23:13)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version