2011-11-26 117 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