DLL上的内存损坏

时间:2011-11-26 15:38:50

标签: c++ dll box2d

我的某个程序中存在内存损坏问题。我告诉这个笑话,看看我的问题(或谷歌能够帮助我) 我有一个DLL THROUGH类函数返回一个类型为b2World的变量,我可以创建新的物理实体(引用内存)。当我的程序(使用DLL)尝试创建任何物理体时,实际上做了很多调试我意识到当请求更多内存时数据会发生变化。但是,当我使用完全相同的代码在同一个DLL中创建主体时,这不会下降 在dll我把dllimport和dllexport全部放在了他们身上,除了在静态和程序中链接Box2D。这两个dll作为dll和程序我有代码。 我正在使用Visual Studio(但我在使用codeblocks-mingw另一个编译器时遇到了同样的问题)。

我希望你能帮助我,因为我搜索了谷歌并且没有抓到任何东西(可能是不正确的搜索词)。

程序:

bool Gameloop::load(){
    m_world = new World();  
    b2World &world = m_world->getWorld();
    b2BodyDef def;
    def.position.Set(100,100);
    def.type = b2_staticBody;
    b2Body *body = world.CreateBody(&def);
    b2PolygonShape box;
    box.SetAsBox(5,5);
    b2FixtureDef fixtureDef;
    fixtureDef.shape = &box;
    body->CreateFixture(&fixtureDef);
    return true;
}

(CreateBody和CreateFixture中的问题)

1 个答案:

答案 0 :(得分:1)

可能你的dll是用另一个版本的运行时库编译的,而不是你目前使用的。通常你不能从dll导出类,你应该使用接口 - 阅读这个http://www.codeproject.com/KB/cpp/howto_export_cpp_classes.aspx。此问题的解决方案可能是使用您当前使用的运行时版本重新编译您的dll。在这种情况下,更好的解决方案应该是将此库静态链接到您的项目。