gpt4 book ai didi

c++ - DLL 内存损坏

转载 作者:行者123 更新时间:2023-11-28 08:13:52 26 4
gpt4 key购买 nike

我的一个程序中存在内存损坏问题。我讲个笑话看看我的问题是什么(或者谷歌已经能够帮助我)我有一个 DLL THROUGH 类函数返回一个 b2World 类型的变量,我可以创建新的物理实体(引用内存)。当我的程序(使用 DLL)尝试创建任何物理物体坠落时,实际上进行了大量调试我意识到当请求更多内存时数据会发生变化。但是,当我使用完全相同的代码在同一个 DLL 中创建正文时,这不会落空在 dll 中,除了在静态和程序中链接 Box2D 之外,我已经把他的 dllimport 和 dllexport 都放了。 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 中的问题)

最佳答案

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

关于c++ - DLL 内存损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8279516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com