2011-11-26 19 views
0

私のプログラムでメモリ破損の問題があります。 私はDLLを使ってクラス関数b2Worldの変数を返し、私は新しい物理的なボディ(参照メモリ)を作成することができることを私は冗談を教えてください。私のプログラム(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