I am compiling a number of .dylibs (a plugins) and I want to statically include tinyxml2 into them.
I've got tinyxml2.cpp
and tinyxml2.h
sitting next to the sources. When I run my make, the commands it produces are:
rm -rf *.a *.os *.dylib
g++-4.0 -g -c -Werror -DUSE_GLEW -I/Applications/Nuke6.3v4/Nuke6.3v4.app/Contents/MacOS/include -isysroot /Developer/SDKs/MacOSX10.5.sdk -arch x86_64 tinyxml2.cpp -o tinyxml2.a
g++-4.0 -g -c -Werror -DUSE_GLEW -I/Applications/Nuke6.3v4/Nuke6.3v4.app/Contents/MacOS/include -isysroot /Developer/SDKs/MacOSX10.5.sdk -arch x86_64 -o SyGeo.os SyGeo.cpp
g++-4.0 -L/Applications/Nuke6.3v4/Nuke6.3v4.app/Contents/MacOS -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -arch x86_64 -bundle -lDDImage -lGLEW -framework QuartzCore -framework IOKit -framework CoreFoundation -framework Carbon -framework ApplicationServices -framework OpenGL -framework AGL -o SyGeo.dylib SyGeo.os
Undefined symbols:
"tinyxml2::XMLDocument::LoadFile(char const*)", referenced from:
SyDistorter::readPreset() in SyGeo.os
"tinyxml2::XMLDocument::~XMLDocument()", referenced from:
SyDistorter::readPreset() in SyGeo.os
SyDistorter::readPreset() in SyGeo.os
"tinyxml2::XMLElement::FindAttribute(char const*) const", referenced from:
tinyxml2::XMLElement::QueryFloatAttribute(char const*, float*) constin SyGeo.os
"tinyxml2::XMLNode::NextSiblingElement(char const*) const", referenced from:
tinyxml2::XMLNode::NextSiblingElement(char const*)in SyGeo.os
"tinyxml2::XMLDocument::XMLDocument(bool)", referenced from:
SyDistorter::readPreset() in SyGeo.os
"tinyxml2::XMLNode::FirstChildElement(char const*) const", referenced from:
tinyxml2::XMLNode::FirstChildElement(char const*)in SyGeo.os
"tinyxml2::XMLAttribute::QueryFloatValue(float*) const", referenced from:
tinyxml2::XMLElement::QueryFloatAttribute(char const*, float*) constin SyGeo.os
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [SyGeo.dylib] Error 1
How should I proceed to make it link? (I want all the .dylibs that I am building to include the tinyxml2 lib statically, preferably with namespace mangling).
Note that I am using the older 10.5 SDK here - I have to since my host application uses it.
When linking you'll to specify all object files needed. So add tinyxml2.a
after SyGeo.os
when linking to create SyGeo.dylib
.