У меня есть кроссплатформенное решение, которое успешно построено для Windows, Linux, но во время сборки в Mac OS X. У меня есть такая проблема:
Undefined symbols for architecture x86_64:
"qx::syb::DataType<boost::shared_ptr<qx::DistributedObject>, void>::DataType()", referenced from:
qx::syb::AbsDynInfo const& qx::syb::dynInfo<boost::shared_ptr<qx::DistributedObject> >()in ThemeKit.cpp.o
qx::syb::AbsDynInfo const& qx::syb::dynInfo<boost::shared_ptr<qx::DistributedObject> >()in libguiserver.a(MemUtils.cpp.o)
"qx::syb::DataType<boost::shared_ptr<qx::aum::Color>, void>::DataType()", referenced from:
qx::syb::AbsDynInfo const& qx::syb::dynInfo<boost::shared_ptr<qx::aum::Color> >()in ThemeKit.cpp.o
"qx::syb::DataType<boost::shared_ptr<qx::ffm::Field>, void>::DataType()", referenced from:
qx::syb::AbsDynInfo const& qx::syb::dynInfo<boost::shared_ptr<qx::ffm::Field> >()in libguiserver.a(FormConverter.cpp.o)
"qx::syb::DataType<boost::shared_ptr<qx::lfm::EventType>, void>::DataType()", referenced from:
qx::syb::AbsDynInfo const& qx::syb::dynInfo<boost::shared_ptr<qx::lfm::EventType> >()in libguiserver.a(FormConverter.cpp.o)
"qx::syb::DataType<boost::shared_ptr<qx::lfm::ParsedExpression>, void>::DataType()", referenced from:
qx::syb::AbsDynInfo const& qx::syb::dynInfo<boost::shared_ptr<qx::lfm::ParsedExpression> >()in libguiserver.a(FormConverter.cpp.o)
ld: symbol(s) not found for architecture x86_64
Я проверил строку компоновщика, и она содержит объектные файлы, которые содержат определения таких символов.
Например:
bash-3.2$ nm -arch x86_64 -U instance*.o | c++filt | grep -i "qx::syb::DataType<boost::shared_ptr<qx::DistributedObject>, void>::DataType()"
00000000001e6e68 S qx::syb::DataType<boost::shared_ptr<qx::DistributedObject>, void>::DataType()
0000000000092e48 S qx::syb::DataType<boost::shared_ptr<qx::DistributedObject>, void>::DataType()
000000000009b170 S qx::syb::DataType<boost::shared_ptr<qx::DistributedObject>, void>::DataType()
Он определен несколько раз, но другой "qx::syb::DataType<boost::shared_ptr<qx::aum::Color>, void>::DataType()"
определен только один раз и также пропущен. Так что это не должно быть проблемой.
У меня последняя возможная среда
Mac OS X version:Darwin mac.qx 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386
IDE: XCode:4.2
Compiler:gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)