链接静态库后,unordered_map中的分配错误

问题描述

我正在开发一个进展良好的渲染框架。该框架被编译成一个静态库。为了测试它,我创建了一个不同的项目,该项目链接库文件并创建了一些不同的场景等。最近,我决定要能够渲染Fbx网格,因此我下载了Fbx SDK,并创建了一个新项目,在其中进行了试验,以确保可以在最低限度的设置下使用链接和功能。现在我有了一个可以正常工作的原型,我将其添加到测试项目中(通过链接静态库)并添加了代码。我的项目编译正常,但遇到一个奇怪的问题。

似乎我的代码中是否有Fbx SDK代码的用法(无需调用/到达它,只要有它就可以了)。我在渲染框架中的unordered_map中得到了一个严重的分配错误(无序映射是尝试将其首次插入地图后,该类的静态成员(无论如何还是相关的)。如果删除Fbx代码(例如,请勿使用SDK中的代码,而不是实际上从项目中删除了SDK),则不会收到错误的分配错误。我以为自己做得有些古怪,但是我没有发现任何证据。我一直在对所有项目使用Visual Studio 2017。感谢所有帮助。

编辑:刚刚发现了一些奇怪的东西,问题似乎只出现在x64调试中,而不是x64 / x86发行版或x86调试中

Foo.h

class Foo
{
private:

    static std::unordered_map<std::string,size_t> ids;
    size_t myID;

public:
    Foo();
    Foo(const std::string& identifier);

    ...
};

Foo.cpp

std::unordered_map<std::string,size_t> Foo::ids;

Foo::Foo()
{
    myID = 0;
}

Foo::Foo(const std::string& identifier)
{
    auto target = ids.find(identifier);

    if (target == ids.end())
    {
        myID = ids.size() + 1;
        ids[identifier] = myID;
    }
    else
    {
        myID = ids[identifier];
    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...