Ошибки связывания ColladaDom - PullRequest
0 голосов
/ 08 декабря 2011

Я пытаюсь создать инструмент, который использует colladadom, но я получаю ошибки компоновщика.Это мой make-файл

CXXFLAGS = -Wall -fPIC -g -t 
OBJECTS = mesher.o oar.o primitive.o assigner.o meshmerizer.o primmesher.o colladifier.o        main.o
LIBS = -I/opt/local/include -L/opt/local/lib -lboost_system -lboost_filesystem -    lcollada14dom 

default:    all

all: $(OBJECTS)
$(CXX) $(CXXFLAGS) -o oarcoll $^ $(LIBS)

main.o : src/meshmerizer.h src/primmesher.h src/main.cpp
$(CXX) $(CXXFLAGS) -c $^

colladifier.o : src/colladifier.cpp
$(CXX) $(CXXFLAGS) -c $^

assigner.o : lib/assigner.cpp
$(CXX) $(CXXFLAGS) -c $^

primitive.o : lib/assigner.h src/utils.h src/prim_enum.h src/primitive.cpp
$(CXX) $(CXXFLAGS) -c $^

mesher.o : src/mesher.cpp
$(CXX) $(CXXFLAGS) -c $^

oar.o : src/oar.cpp
$(CXX) $(CXXFLAGS) -c $^

primmesher.o : src/primmesher.cpp
$(CXX) $(CXXFLAGS) -c $^

meshmerizer.o : src/meshmerizer.cpp src/primmesher.h
$(CXX) $(CXXFLAGS) -c $^

clean:
rm -f oarcoll main.o $(OBJECTS) *~

Когда я компилирую, я получаю следующий результат:

Undefined symbols for architecture x86_64:
  "boost::system::generic_category()", referenced from:
  __static_initialization_and_destruction_0(int, int)in colladifier.o
  __static_initialization_and_destruction_0(int, int)in main.o
  "boost::system::system_category()", referenced from:
  __static_initialization_and_destruction_0(int, int)in colladifier.o
  __static_initialization_and_destruction_0(int, int)in main.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [all] Error 1

Я могу скомпилировать без проблем, если я делаю все это в одной строке и не делаю.o файлы и свяжите их позже.Т.е. это:

g++ domTest.cc -I/opt/local/include -L/opt/local/lib -lboost_system -lcollada15dom -o domTest

отлично работает на той же машине.

Я запустил nm на libboost_system.dylib, и неопределенные символы появляются в дампе.

Существует множество других подобных тем, я видел их и пробовал решения, но они все еще не работают для меня.

Есть идеи?

...