DLL内存损坏

Memory Corruption on DLL

本文关键字:损坏 内存 DLL      更新时间:2023-10-16

我的一个程序中存在内存损坏问题。我讲这个笑话是为了看看我有什么问题(或者谷歌能帮我(我有一个DLL THROUGH类函数,它返回b2World类型的变量,我可以创建新的物理体(引用内存(。当我的程序(使用DLL(试图创建任何物理实体时,事实上,为了进行大量调试,我意识到当请求更多内存时,数据会发生变化。然而,当我在同一个DLL中执行完全相同的代码来创建主体时,这不会发生在dll中,我把dllimport和dllexport都放进去了,除了在静态和程序中链接Box2D。dll作为dll和程序我都有代码。我使用的是Visual Studio(但我在使用另一个编译器的代码块时也遇到了同样的问题(。

我希望你能帮助我,因为我在谷歌上搜索过,没有发现任何东西(可能是错误的搜索词(。

  • DLL
  • 世界.h
  • 世界.cpp

程序:

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中的问题(

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