2009-05-08 10 views
0

Visual C++アプリケーションをLinuxに移植しようとしていますが、コードはVisual Studioでエラーなしでコンパイルされますが、 Linuxでの多くのコンパイルエラーこれらのエラーの一つは次のとおりです。wxwidgets // g ++コンパイラエラー: 'operator new(..')への呼び出しに一致する関数がありません

../src/wktools4.cpp:29: error: no matching function for 
call to 'operator new(unsigned int, const char[40], int)' 

詳細情報:

  • IDE:
:G ++
  • GUIのAPIとKDevelopの

    IMPLEMENT_APP(Cwktools4App) 
    

    や他のいくつかの行:

    エラーが次の行に表示されます。

    私には何が欠けていますか?

  • +0

    IMPLEMENT_APPマクロはどのように展開されますか?プリプロセッサからの出力をダンプして、マクロ内でコンパイル時エラーを見つけるのに役立ちます。 –

    +0

    でも起こります。 "frame = new Cwktools4Frame;" – mspoerr

    答えて

    1

    私はエラーを検出しました:

    #ifdef __WXDEBUG__ 
    #define new WXDEBUG_NEW 
    #endif 
    

    私はこれらの行を削除すると、私はこれ以上のエラーを得ることはありません。コードは、VisualStudioのwxwidgetsウィザードから生成されました。私はそれが何をしているのかわかりません...

    ありがとうございました!今すぐリンカーのエラーを修正する必要があります;)

    1

    Visual C++アプリケーションのオーバーロードがoperator new()のようです。

    これは、各メモリ割り当てにデバッグとその他の分析情報を追加するために(多くのパラメータがあります)実行されることがよくあります。

    frame = new Cwktools4Frame;のように単純なエラーが発生するので、「新しい」を何か他のものとして再定義するマクロまたはコンパイラレベルの定義を探すことをお勧めします。最初の場所はデバッグ固有のビルドでなければなりません。

    +0

    私は、オーバーロードされた新しい演算子を使用しません。たぶん、いくつかのサードパーティのlib(wxwidgets?)でそうしています。これをどのように見つけたり解決したりできますか? – mspoerr

    +0

    "-E"引数を付けて問題のファイルを再度コンパイル(gcc)します。プリプロセッサがそのパスを実行し、すべてのマクロが展開された後に、コードの外観を出力します。 –

    関連する問題