我不知道这是什么问题。最近建立了一个新的个人电脑,它工作得很好(相同的项目,相同的设置在Visual Studio等)。但由于某种原因,任何时候我尝试fmt::format
它会给予我一个访问冲突异常。虽然如果格式化与spdlog例如它的工作正常。
const char* TextureException::what() const noexcept
{
mWhat = fmt::format("{}\n[Info] {}", getType(), getInfo()); // access violation
return mWhat.c_str();
}
getType()
只返回一些标识信息,它现在是硬编码的,所以它不是一个nullptr或任何东西。与getInfo()
相同(除了返回文件和行号)
即使只是测试一些代码,也会给予访问冲突错误:
int main(int argc, char** argv)
{
std::string test = fmt::format("Testing {}", 32); // access violation
std::cout << test << "\n";
}
我完全被难住了,为什么这是不再工作的新个人电脑。
1条答案
按热度按时间l0oc07j21#
在我的例子中,当格式化字符串是unicode时没有问题,只有当它是ascii时才发生访问冲突。
将设置visual studio〉项目属性〉vcpkg〉特定于目标和配置〉Vcpkg配置更改为调试版本中的调试解决了该问题。