2

コンテキストについては、この質問を参照してください。参照されていないライブラリをリンクすると、プログラムが壊れます

次のプログラムがあります。

#include <iostream>

int main( int argc, char* argv[] )
{
    std::cout << "Hello world" << std::endl;

    int *p;
    p = new int(3);
    std::cout << *p << std::endl;
    delete p;

    return 0;
}

サードパーティのライブラリにリンクするまでは問題なく動作します。より大きなプログラムで必要になる Abaqus ライブラリにリンクすると、上記のプログラムを実行しようとするとクラッシュしますdelete p;。Dependency Walker を使用して、への呼び出しがAbaqus によって提供された定義operator newにリンクされていることを発見しました。operator newただし、への呼び出しoperator deleteは標準定義にリンクされています。

new/delete::new/に置き換えても::delete、同じ結果が得られます。

標準の新規/削除演算子を解決する方法はありますか? または、これらの演算子の正しい (標準) 定義に Visual Studio をリンクさせることはできますか?

4

1 に答える 1

0

リンカー オプションを指定する"/DEFAULTLIB:MSVCRT.LIB"と、プログラムが正常に実行されます。

于 2013-07-01T17:02:21.783 に答える