問題タブ [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.
visual-c++ - C++ クラス定義で public ref を使用する理由
まず最初に、C++ はまったく初めてということを明確にしたいので、これは単純でやや明白な質問かもしれません。私が読んでいる C++ Primer という C++ の本では、クラスは次のように記述して定義されます。
ただし、VS2008 では、コンパイラはこれを好みませんでした。ただし、次のように、クラスの前に public ref を追加します。
コンパイラで通過しました。class のみで定義する場合と public ref class で定義する場合の違いを誰か説明してもらえますか? とても感謝しております。
.net - マネージ C++ の double.Parse の問題
マネージ C++ で double 値を解析しているときに奇妙な問題が発生します。私が何か間違ったことをしているのかもしれません。私がする時:
結果の出力は0.006000000000001
. なぜ1を追加するのですか?
また、値を小数点以下 5 桁に丸めると、失敗します。私がやっている:
しかしresult2
、常に0.006000000000001
です。私は何を間違っていますか?
c++ - WPF が C++.NET をサポートしないのはなぜですか? WinForms のように?
C++ にこだわる者として、これは本当に私を悩ませてきました。私は、Microsoft が約 10 年前に思いついた「言語に依存しないフレームワーク」のアイデアを常に気に入っています。なぜ彼らはこのアイデアにボールを落としたのですか? その背後にある理由を知っている人はいますか?
c++-cli - マネージド型のグローバル オブジェクト
管理型のグローバル/静的オブジェクトを宣言/定義する方法はありますか?
c# - CodeModelおよびその他のCOMオブジェクトのマネージC++とC#のパフォーマンス
Visual Studio 2008の拡張機能を作成していますが、C ++用に独自のパーサーを作成したくなかったため(マゾヒスティックではありません)、VCCodeModelを使用しています。
これらのCOMオブジェクトから単純なフィールドを取得するには、他のどの操作よりも桁違いに時間がかかります。非常に大規模なC ++プロジェクトのメソッドレベルにドリルダウンしているため、再帰の最低レベルでこの非効率性があります。 。
上記のコードは、プロジェクトの基本レベルですべての関数を反復処理し、それらをXMLに変換してから、保存します。XMLメソッドは、名前、パラメーターなど、VCCodeFunction内の複数のフィールドを呼び出します。
この目的のために、マネージC ++はC#よりも高速ですか?マネージC++のバックエンドがC#とどのように異なるかについての理解が不十分ですが、私の直感では、C ++のマネージコードとアンマネージコードの間の「コンテキストスイッチ」コストが少ないと思いますが、間違っていますか?CodeModelを使用してC++でマネージコードとアンマネージコードを繰り返し切り替えると信じていることから、かなりの速度低下が見られます。マネージC ++の方が高速であると想定して正しいですか?
.net - コンテンツが実行時にのみ利用可能な IDispatch .NET COM クラスを作成する
現在、一部のコードをネイティブ C++ からマネージ C++ (純粋) に移行中です。コードには、Windows Active Scripting との対話が含まれます。現在、私たちのネイティブ コードは、(ATL を使用して)「IDispatch」を実装する「ObjectDispatch」というクラスを提供します。このクラスの実装は、実行時に独自のネイティブ クラス「オブジェクト」にクエリを実行して、サポートするメソッドとプロパティを判断し、「IDispatch::Invoke」呼び出しをこの「オブジェクト」に転送します。
'IDispatch' をサポートする .NET COM 相互運用機能を使用した例を見てきましたが、これらの実装は IDL から派生したものか、.NET クラスの仕様に基づいたものであり、どちらも実行時に発生しません。
特定のクラスで次の属性を使用すると、.NET COM 相互運用機能がコンパイル時に「IDispatch」の実装を生成できるようです。
この属性をサポートするクラスを実行時に動的に生成できると想定しています。ただし、それを試みる前に、ネイティブ コードで使用されたのと同様の手段でこれを実現する方法について誰かアイデアを持っているかどうか疑問に思っています。
現時点では、'Object' クラスはネイティブ クラスのままであることに注意してください。
c++ - コールバックとは何ですか?それは何のためにあり、たとえばC++でどのように実装されていますか
これは初心者の質問だと思いますが、C ++を学ぼうとしているので、この「コールバック」という表現に頻繁に困惑しています。私はそれをグーグルで検索してウィキペディアをチェックしましたが、良い説明が見つかりませんでした。私はいくつかのJavaとC#に精通していますが、それがどれほどありそうもないように聞こえるかもしれませんが、コールバックが何を意味するのかを本当に理解したことはありません。
誰かがこの用語を単純な素人に説明する方法を知っているなら、私は本当に感謝するでしょう。
managed-c++ - C++/CLI - pin_ptr のヘルプ
アンマネージ関数を使用するラッパー アプリを作成しており、多くの pin_ptr を使用しています。
私の質問は、ほとんどの場合、メソッド呼び出し内で pin_ptr を使用し、メソッド呼び出し内でも pin_ptr 変数が宣言されているということです。コードが私たちの方法になったとき、ピン留めされていないので何か問題がありますか? 宣言をクラススコープに移動する必要がありますか?
ありがとう!
.net - Visual Studio 8: 混合モード アセンブリでのビルド時間
約 50 個のソース ファイルで構成される C++/CLI アセンブリがあります。このアセンブリのコードは、多数の C++ ライブラリに静的にリンクして、さまざまな「重労働」タイプのタスクを実行します。
このアセンブリをビルドするために Visual Studio 8 (2005) SP1 を使用しています。
「プロジェクトのみ」->「リビルドのみ」を介してこのアセンブリだけを (依存関係などなしで) ビルドすると、まともなデュアルコア マシンで約 4.5 分かかります。以下は、おおよその時間で注釈が付けられた簡略化されたビルド出力です。
このアセンブリのビルドに時間がかかる理由のデバッグを開始するにはどうすればよいですか? コンパイル時間とリンク時間は、それほど大きくはありませんが、おそらくこのサイズのプロジェクトに期待できる時間です。私が懸念しているのは、2 つの「コード生成」ステップがあり、それぞれが他のほとんどのプロジェクトよりもはるかに時間がかかるという事実です。
私の最初の推測では、これはアセンブリにリンクされているアンマネージ コードの量に関係しているということでした。しかし、同じくらい多くのネイティブ コードを使用するマネージ アプリケーション プロジェクトがいくつかあり、ビルド時間は非常に妥当です。
非常に長い時間がかかる2つの「コード生成」ステップの原因を正確に知っている人はいますか? 不足しているプロジェクト設定はありますか?
multithreading - Managed C++ での C# の lock()
マネージ C++ には、C# のlock()および VB の SyncLock と同等のものがありますか? もしそうなら、私はそれをどのように使用しますか?