0

我不确定这怎么可能。我正在构建一个 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++ 文件。我正常编译时,项目成功找到了这些文件。任何帮助将不胜感激。谢谢!

4

1 回答 1

0

问题原来是 Xcode 过于努力地优化 Release 产品。在这样做时,它忽略了一个虚拟函数,该函数正在初始化我正在使用的库中的模板的使用。这个函数没有被任何人调用,所以它没有被编译。我通过将构建设置下的“优化级别”从默认的“最快,最小 [-Os]”降低到“快速 [-O,O1]”来解决这个问题。这解决了问题!我想也可以更改库中的代码来解决这个问题。

于 2013-09-09T18:34:30.737 回答