既存のC++コードベースとc#wpfアプリケーションの間にCLI interopレイヤーを書き込もうとしています。私のC++ライブラリは、自分自身のメモリトラッキングやその他の細かい点を実装するために、すでにグローバルなnewとdeleteをオーバーロードしています。私は私のネイティブライブラリが含まれており、私を試してみて、ビルドするたび、しかし>(C#WPFアプリケーション)グローバル削除のオーバーロードの競合
- >(CLI層) -
(ネイティブライブラリが静的LIBにコンパイル):だから、依存関係は次のようになりすでにmsvcrtdで定義された
エラーLNK2005 "のボイド__cdeclオペレータは、(void *型)を削除"(YAXPAXする@ Z @ ?? 3):CLIプロジェクト、私はすでにmsvcrtdで定義されたグローバルな削除のために、競合するシンボルに実行します.lib(delete_scalar.obj)
私はビルドでデフォルトのライブラリにあるものの代わりにグローバルな削除を取る方法を知りません。私は、DLLをコンパイルして静的なライブラリをすべてコンパイルしてから、そのDLLをロードするinteropレイヤを持つ別の純粋なネイティブプロジェクトを作成しようとしました。これはうまくいきますが、接着剤の代わりに2層の接着剤を使用しないでください。
私はVisual Studio 2015を使用しています。
メモリのトラッキングは素晴らしいですが、グローバルに新しいオーバーロードがあり、プレーンハックを削除していませんか? – Steeve
この問題を再現するために小さなテストケースを設定しようとしましたか? 1つの考えは、C++ライブラリの設定が異なることです。特に静的リンクの場合 –