c++ fmt::格式访问冲突

iezvtpos  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(147)

我不知道这是什么问题。最近建立了一个新的个人电脑,它工作得很好(相同的项目,相同的设置在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";
}

我完全被难住了,为什么这是不再工作的新个人电脑。

l0oc07j2

l0oc07j21#

在我的例子中,当格式化字符串是unicode时没有问题,只有当它是ascii时才发生访问冲突。
将设置visual studio〉项目属性〉vcpkg〉特定于目标和配置〉Vcpkg配置更改为调试版本中的调试解决了该问题。

相关问题