問題タブ [managed-c++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pointers - ポインターマネージ C++ へのポインター
void** を取る関数を含む古い C ライブラリがあります。
マネージ C++ からこの関数を呼び出そうとしています (m_pStuff は void* 型の親 ref クラスのメンバーです):
これにより、Visual Studio から次のエラーが表示されます。
エラー C2440: 'static_cast': 'cli::interior_ptr' から 'void **' に変換できません
私は、コンパイラが void* メンバー ポインターを背後で cli::interior_ptr に変換していると推測しています。
これを行う方法に関するアドバイスはありますか?
.net - マネージ C++ コードのメモリ破損を検出するためのツール
画像を圧縮するためにオープン ソースの C++ 圧縮ライブラリを使用している .NET アプリケーションがあります。マネージド C++ 経由で C++ ライブラリにアクセスしています。圧縮中にヒープの破損が見られます。_CrtIsValidHeapPointer への呼び出しは、圧縮後のクリーンアップ時に free() への呼び出しでエラーを検出しています。
この問題の診断に役立つPurifyなどのツールはありますか? また、マネージ コードとアンマネージ コードを組み合わせて作業しているときにヒープ破損の原因となっているものはありますか? デバッガーで例外をキャッチしましたが、問題の解決策を見つけるのに役立つ他のツールがあると便利です。
.net - IntPtrをストリームに変換するにはどうすればよいですか?
MemoryStream
時間がかかりますが、可能であればデータをコピーせずにこれを実行しbyte[]
たいと思います。
c# - C++ で C# クラスを使用する場合の EEFileLoadException (win32 アプリ)
展開上の理由から、COM Callable Wrapper を使用する代わりに、IJW を使用して C# アセンブリを C++ でラップしようとしています。
私は他のプロジェクトでそれを行いましたが、このプロジェクトでは EEFileLoadException を取得しています。どんな助けでも大歓迎です!
マネージ C++ ラッパー コード (これは DLL 内にあります):
テスト コード (これは EXE です):
価値のあるものとして、イベントログは次を報告します: .NET ランタイム バージョン 2.0.50727.143 - 致命的な実行エンジン エラー (79F97075) (80131506)
残念ながら、マイクロソフトはそのエラーに関する情報を持っていません。
c++ - マネージ C++ と C++ の違い
2 番目の質問は、これら 2 つのうち何をいつ使用するかということです。
c++-cli - Managed C++ を C++/CLI に変換するツールはありますか?
Managed C++ 構文を使用して記述された古いプロジェクトがあります。私は、合理的に痛みのない更新方法をチームに提案したいと思います (私はある程度の人間とのやり取りは気にしません。まだ手作業で作業をしなければならないという私の予想では現実的だと思います)。 XML ドキュメントを追加できるように、既存のコードを C++/CLI 構文に変換します (プロジェクトは他のプロジェクトへのライブラリであり、ドキュメントがあると非常に便利です)。
では、これを支援する優れたツールはありますか? それとも、新しい C++/CLI 構文コンパイラに切り替えて、エラーを修正するだけのケースですか?
.net - マネージ C++ アセンブリ属性
マネージ C++ アセンブリにアセンブリ属性を追加する方法はありますか? 典型的な C# プロジェクトでは、通常、AssemblyInfo.cs
次のようなコード行がファイルに含まれています。
[assembly: AssemblyTitle("Some Assembly")]
追加したいプライベート アセンブリ属性 (リソース ファイルを介して追加できるバージョン属性の 1 つではありません) があり、これが可能かどうかわかりません。
.net - アンマネージド コードでマネージド デリゲートを処理する
これを技術的に機能させることができることはわかっていますが、可能な限りクリーンなソリューションを実装したいと考えています。状況は次のとおりです。
アンマネージ C スタイル ライブラリをラップするマネージ ライブラリがあります。私が現在ラップしている C スタイルのライブラリ機能は、文字列のリストを含むいくつかの処理を行います。ライブラリのクライアント コードはデリゲートを提供できます。リストの処理中に「無効な」シナリオが発生した場合、ライブラリはこのデリゲートを介してクライアントにコールバックし、クライアントが使用する戦略を選択できるようにします (例外をスローし、無効な文字など)
私が理想的に望んでいるのは、すべてのマネージ C++ を 1 つの関数に分離してから、アンマネージ パラメーターのみを受け取る別の関数を呼び出して、すべてのネイティブ C++ とアンマネージ コードをその時点で分離できるようにすることです。このアンマネージ コードにコールバック メカニズムを提供することは、私にとって難点であることがわかっています。
このスニペットでは、すべての C ライブラリ アクセスを ProcessList 内に保持したいのですが、処理中にコールバックを実行する必要があります。このコールバックは、一部のクライアントから渡される InvalidStringFilter デリゲートの形式で提供されます。私の管理ライブラリ。
c++ - アンマネージ C++ で (デリゲートから) マネージ例外をキャッチするにはどうすればよいですか?
Marshal::GetFunctionPointerForDelegate によって提供される関数ポインターを介してマネージド デリゲートを呼び出すアンマネージド C++ があります。このデリゲートは、例外をスローする可能性があります。アンマネージ C++ でこの例外を適切に処理して、ポインターのクリーンアップなどを確実に行い、例外をより多くのマネージ コードに再スローできるようにする必要があります。コール スタックは次のようになります。
マネージド コード -> アンマネージド C++ -> デリゲートを介したマネージド コードへのコールバック (ここで例外をスローできます)。
アンマネージ コード内のリソースをクリーンアップし、コール スタック全体を開始したマネージ コードに使用可能な例外をスローできるように、この状況を適切に処理するためのポインタを持っている人はいますか?
c# - データテーブルを管理されていない環境に渡す(ビジュアルc#2005)
データテーブルデータを管理されていない環境に渡すための最良の方法は何でしょうか?(c ++)
Ofer