Xcode 如果选择“产品运行”,则项目将编译,但如果选择“产品配置文件”,则会出现编译错误

Xcode 如果选择“产品运行”,则项目将编译,但如果选择“产品配置文件”,则会出现编译错误,xcode,Xcode,我不确定这怎么可能。我正在构建一个OSX应用程序。当我通过选择run进行编译时,这个应用程序可以正常构建和运行,但当我选择Product->Profile时,会出现以下链接器错误 Undefined symbols for architecture x86_64: "void ByteString::readNextTo<unsigned short>(unsigned short&)", referenced from: CommandPacket::readNextC

我不确定这怎么可能。我正在构建一个OSX应用程序。当我通过选择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
架构x86_64的未定义符号: “void ByteString::readnexto(unsigned short&)”,引用自: CommandPacket::Command.o中的readNextCommandTo(Command&) “void ByteString::append(unsigned short const&)”,引用自: 遥测数据包::遥测中的设置为(int) “void ByteString::readAtTo(unsigned short,unsigned char&)”,引用自: 等

这是指文件Cupp.cp和PcP.HPP,它们是C++文件。当我正常编译时,项目成功地找到了这些文件。任何帮助都将不胜感激。谢谢

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