これは私が今までこのようなサイトを使用したのは初めてですが、私はかなり立ち往生午前中_CrtIValidHeapPoint(pUserData)アサーションの失敗を修正する方法。 以下のバックグラウンドセクションは完全性のために記載されています。その中に記述されている操作が現在直面している問題に寄与しているかどうかわかりません。C++のWinFormsアプリケーション
背景
同僚と私は大学の割り当てのためのVisual Studio 2010(完全版)に(デフォルト設定の)コンソールアプリケーションでのC++コードの全体の多くを書いていました。私たちはwinformsアプリケーションを手に入れたいと思ったので、Visual Studio 2010で作成し、すべてのコードをコンソールアプリケーションからインポートしました。私たちは、次の問題に直面しました:
すべての私たちの実装ファイルに「stdafx.hを」ファイルに私たちの含みを追加し、その後の#include「stdafx.hを」するために必要- (.CPPさん)。我々は、C++文字列(STD ::文字列)を使用していた、我々は管理対象システムの文字列に変更しなければならなかった場所で
- (システム::文字列^)CLRの互換性のために。
- 「共通言語ランタイムサポート」のコンパイルオプションを/ clr:pureの代わりに/ clrに変更しました。これは、私たちがboost :: shared_ptrで持っていたリンクエラー(LNK2028、LNK2019)を解決するために必要でした...
私たちは上記のことを実行した後、プロジェクトをコンパイルしていました。
問題
我々は、次のアサーションの失敗を取得したアプリケーションの実行:ときのように、
_CrtIsValidHeapPointer(pUserData)
このアサーションはすぐに失敗し、一見実行されている任意のコードなしに私は彼らがデバッグ(コールスタックが空である)に達していないメインの先頭にブレークポイントを設定します。
私は実行するアプリケーションを取得することができた唯一の方法は、CLRのオプションを設定することであると/ CLR:純粋とブーストのすべての使用を取り除きます。
私は3つの質問があります。
- が実行されているコードのですか?私は、アサーションがコードが実行されずに失敗する可能性があるとは思わないことを知っています。おそらくメインの前に起こることはありますか?
- /clrと/ clr:pureオプションは実際に何を意味していますか?
- ライブラリをブーストできるかどうかは、clr互換コードにコンパイルできますか?もしそうなら、何がリンク問題を引き起こすかもしれませんか?
私は文字通り何を投稿すればいいのか分からないので、私はコードを投稿していません...どこに問題が発生しているのかわかりません。投稿するコードの提案があれば誰にでも公開しています。
よろしく ブラッド