У меня есть два класса Один и два присутствуют в двух отдельных файлах cpp. Содержание являютсяC++-компоновщик библиотек с циклической зависимостью
#include "One.h"
#include "Two.h"
namespace Sample
{
One::One() {}
void One::foo1() {
Two t;
t.foo();
}
void One::foo() { }
}
и Two.cpp является
#include "Two.h"
#include "One.h"
namespace Sample {
Two::Two() { }
void Two::foo1() {
One t;
t.foo();
}
void Two::foo() {}
}
создать статическую LIB одного и двух с использованием
g++ -c One.cpp; ar cr libOne.a One.o; ranlib libOne.a
g++ -c Two.cpp; ar cr libTwo.a One.o; ranlib libTwo.a
Для основной, я призываю соответствующие foo1
функции как классы и скомпилировать основной код следующим образом:
g++ main.cpp -o main -L. -lOne -lTwo
Код компилируется, даже если я изменяю порядок One и Two.
Я ожидал, что код не должен компилироваться, если я не повторю порядок 1 и 2, так как существует циклическая зависимость.
В чем может быть причина?
Я бегу Ubuntu 14.04 с г ++ версии 4.8.2