Найти - Пользователи
Полная версия: [c++] линковка объектный файлов
Начало » Флейм » [c++] линковка объектный файлов
1
niro
Вот пытаюсь собрать
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 но форум не меняет знаки “<” “>” .
Александр Кошелев
niro
#include “2.cpp”
забавно, файлы релизации(*.cpp) таким образом не подключают.
Нужно подключить iostream в каждом из *.cpp файлов, если он там нужен. в файле 1.cpp он не нужен совсем. следовательно #include оттуда нужно убрать вообще.
niro
вобщем проблема появилась из-за того, что где то писалось, что таким образом можно ускорить процесс сборки приложения при его разработке.
явно это не тот случай.
Андрей Светлов
Камрад niro.
Выложите где-нибудь ваши исходники целиком. Или переправьте на мыло.
И я их скомпилю - и при этом объясню, что было не так.
Иначе - гадание по кофейной гуще
niro
собственно это все.
может есть какие либо доки, которые расписывают про компиляцию нескольких файлов
niro
решил : g++ *.o -o out -Xlinker -zmuldefs
Андрей Светлов
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";
}
Или хотелось чего-то еще?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB