我不知道这有什么问题。最近建造了一台新的PC,它工作得很好(相同的项目,相同的设置,在视觉工作室,等等)。但是由于某种原因,每当我尝试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";
}我完全不明白为什么这不再适用于新的个人电脑。
发布于 2022-11-21 04:56:58
在我的例子中,当格式化字符串是unicode时没有问题,只有当它是ascii时才会发生访问冲突。
将visual studio>project property>vcpkg>Target和Configuration Specific>Vcpkg配置更改为Debug构建中的调试解决了这个问题。
https://stackoverflow.com/questions/65855022
复制相似问题