如果我选择Product Run,项目将编译,但如果选择Product Profile,则会出现编译错误

时间:2013-05-27 20:10:48

标签: xcode

我不确定这是怎么回事。我正在构建一个OS X应用程序。当我通过选择Run编译它时,这个应用程序构建并运行得很好但是当我选择Product-> Profile

时我得到以下链接器错误
Undefined symbols for architecture x86_64:
"void ByteString::readNextTo<unsigned short>(unsigned short&)", referenced from:
  CommandPacket::readNextCommandTo(Command&) in Command.o
"void ByteString::append<unsigned short>(unsigned short const&)", referenced from:
  TelemetryPacket::setSAS(int) in Telemetry.o
"void ByteString::readAtTo<unsigned char>(unsigned short, unsigned char&)", referenced from:
 etc

这是指Packet.cpp和Packet.hpp文件,它们是C ++文件。正常编译时,项目会成功找到这些文件。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

问题证明Xcode正在努力优化Release产品。在这样做时,它忽略了一个虚拟函数,它正在初始化我正在使用的库中模板的使用。任何人都没有调用此函数,因此没有编译。我通过将Build Settings下的“Optimization Level”从默认的“最快,最小[-Os]”减少到“Fast [-O,O1]”来解决这个问题。这解决了这个问题!我想也可以更改库中的代码来解决这个问题。