2011-11-26 118 views
0

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

我希望你能帮助我,因为我搜索了Google并没有发现任何东西(可能是不正确的搜索词)。

计划:

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问题)

+0

对于那些不会讲西班牙语的人来说,这将很难回答。但是,至少向我们展示导致问题的代码。理想情况下,最小化的地方可以缩小范围。然后,即使可能存在语言障碍,我们也许可以提出一些建议。 – Bart

+1

请张贴一些代码来证明问题。 – SoapBox

+0

我可以用英文阅读,但我不能用英文写作 – egyware

回答

1

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

+0

版本,谢谢,我现在检查它 – egyware