问题描述
我正在开发一个进展良好的渲染框架。该框架被编译成一个静态库。为了测试它,我创建了一个不同的项目,该项目链接库文件并创建了一些不同的场景等。最近,我决定要能够渲染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 (将#修改为@)