問題タブ [managed]
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.
memory - DotNET アプリのメモリ使用量
私のアプリケーション (DotNET) は、C++/CLI SDK を公開する C++ スタンドアロン アプリ内のプラグインとして実行されます。
ユーザーが大量のデータを生成するのは非常に簡単です。プラグインとベース アプリケーションのメモリ消費量が法定最大値の 90% に達した場合、中止オプションを提供したいと考えています。
総メモリ消費量 (理想的にはマネージ コードとアンマネージ コードの両方) を測定するにはどうすればよいですか? また、現在のアプリケーションで使用できるメモリ ウィンドウの量を知るにはどうすればよいですか?
interop - クラスが登録されていません.... アンマネージド C++ からマネージド C# ライブラリを呼び出そうとしたとき
アンマネージ C++ コードの COM オブジェクトに使用している C# ライブラリがあります。Visual Studio の [Register For Com Interop] チェックボックスを使用してライブラリを登録し、ComVisible を true に設定しました。
tlb を C++ アプリにインポートしました.....実行すると、「クラスが登録されていません」というメッセージが表示されます....
これは以前は機能していましたが、C# プロジェクトのディレクトリを別の場所に移動した後に発生し始めました....はい、移動した後にライブラリを再登録しました。
レジストリからすべての参照を削除しました... gacutil.exe /i を実行してみました...サイコロはありません。
誰でもこれを修正する方法を知っていますか?
.net - .NET 用の軽量 x86 エミュレーター / 管理された環境での x86 コードの実行
当社は、製品ライン全体を C++ コードベースから .NET Framework に移行しています。非常に大きなコードベースがあり、この移行は何年にもわたって段階的に行われています。
Silverlight などの純粋なマネージ コードの利点を享受したいと考えていますが、.NET への移植には時間がかかるレガシー C++/x86 モジュールが多数あります。
1 つの解決策は、これらのモジュールを .NET Framework の小さなメモリ サンドボックスで実行される軽量の x86 エミュレーターにロードすることです。これにより、純粋なマネージド アプリケーションを維持しながら、従来の x86 DLL コードを呼び出すことができます。
そのようなプロジェクトを知っている人はいますか?
心から、
ダン
.net - WinDbg/SOS を使用してマネージド -> ネイティブ コールスタックをデバッグします。「ThreadStore のリクエストに失敗しました」というメッセージが表示される
managed.exe の MyManagedFunc は、unmanaged.dll の MyUnmanagedFunc() を呼び出します。Win32 を使用して unmanaged.dll にミニダンプを生成します。SetUnhandledExceptionFilter. コールスタックで MyUnmanagedFunc を確認できますが、マネージ側では何も役に立ちません。
WinDbg と SOS.dll を使用してマネージド コールを確認できるはずですよね?以下は私のWinDbgセッションです。私は何を間違っていますか?
c++ - Managed C++ で #using を介して参照される .NET ライブラリのルックアップ パスを変更するにはどうすればよいですか?
System.Reflection.Assembly.LoadFileを使用して、実行時にいくつかのプラグイン (任意の .NET 言語で実装) をロードする Managed C++ で DLL を開発しました。すべてのプラグインで実装されるインターフェースは C# で実装されています。これは、Managed C++ コードで次のように使用されます。
プラグインのロードはうまくいきます。私が直面している問題は、実行時にIMyPlugnInterface.dll
ファイルが Managed C++ DLL と同じディレクトリにない可能性があることです。これは、「IMyPluginInterface」タイプが実行時に使用できず、例外がスローされることを意味します。
#using
以前、ステートメントを介して参照される DLL を解決するときに使用されるルックアップ パスに影響を与えることができるかどうかを尋ねました。残念ながら、これは結果をもたらしませんでした。
これには別のアプローチがありますか?経由で参照#using
される型をマネージ C++ DLL にコンパイルできますか? たぶん、他の誰かがまったく異なる解決策を持っていますか?
interop - C ++ /CLIプロジェクトに.NetDLLをロードしないようにしますか?
C ++/CLIで記述されたプロジェクトがあります。マネージコードにあるタイプもあれば、完全にネイティブなコードにあるタイプもあります。.Netフレームワークのバージョンがインストールされていないマシンで生成されたDLLがあるとしましょう。別のネイティブアプリケーションが私の「混合モード」DLLとリンクし、ネイティブタイプのみを使用する方法はありますか?「/clr」スイッチを追加すると、Dllは自動的にいくつかの.Net Framework Dll(mscorjit、mscoreeなど)に依存することに気付きました。実際に、そこで定義されている100%ネイティブタイプを使用しようとすると、アプリケーションは、それらの.Net Framework Dllをロードしようとします(コードのその部分でフレームワークを使用していなくても)。
それで、そのような場合にそれらのDLLをロードすることを避けることは可能ですか?(私が見ているように、他のオプションは、管理対象のものを除いて、すべてのネイティブタイプを含む別のネイティブプロジェクトを作成することです)。
ありがとう
visual-studio-2008 - 別のワークグループ マシンでリモート デバッグするにはどうすればよいですか?
VS 2008 内で「プロセスへのアタッチ」機能を何度も使用しましたが、実際にリモート マシンで使用したことはありません。今私はそれをしなければなりません、そして私はすでにそれについてネットでたくさん読んでいます. 少し遊んだ後、どうすればよいのかよくわからないところまで来ました。まず、これまでに行ったことの簡単なリストを以下に示します。
テスト マシン (Win XP Pro SP3 x86):
- Msvsmon をインストールする
- ローカル アカウントのローカル ポリシーを「クラシック - ローカル ユーザーは自分自身として認証する」に変更します。
- Windowsファイアウォールを無効にしました(ええ、良い考えではありませんが、ポートの問題を回避するためです)
- pdbファイルを含むデバッグ対象のアプリケーションのコピーを植えました
- 開発マシンと同じ名前とパスワードを持つユーザー アカウントを作成しました
- 新しく作成されたアカウントが管理者であり、リモート デバッグの権限があることを確認しました
VS ホスト マシン (Vista Home Premium x64 SP2、VS 2008 pro SP1)
- ファイアウォールを無効にする
- UNC パス経由でテスト マシンにアクセスできることを確認しました (動作)
したがって、ネットワーク通信は機能します。ファイアウォールはオフです。Msvsmon はテスト マシンで実行されています。しかし、「Attach to process」を介して接続し、テスト マシンのコンピューター名を入力しようとすると、次のようになります (ドイツ語からの翻訳)。
「TESTMACHINE」という名前の Visual Studio リモート デバッグ モニターへの接続を確立できませんでした。Visual Studio リモート デバッガーは、その Windows バージョンをサポートしていません。
「Windowsのバージョンはサポートされていません」が実際に「認証エラー」を言おうとしていることがわかるまで、しばらく時間がかかりました。
マネージコードをデバッグする必要があるため、うまくいきませんが、「標準」の代わりに「認証なしのリモート」を使用して接続を試みました。したがって、それに応じて Msvsmon を調整すると、接続が機能しました (プロセスを選択することはできましたが、もちろん実際にデバッグすることはできませんでした)。そのため、認証に問題があると思います。
最後に、私の質問:
同じワークグループ内でマネージ コードをリモートでデバッグできるように、両方のマシンでユーザー/認証を設定するにはどうすればよいですか?
ローカル ユーザー名は同じですが、"DEVMACHINE\me" が実際には "TESTMACHINE\me" であるマシン上でリモート デバッグできるようにするにはどうすればよいですか?
ありがとう ;)
c# - C++ コールバックへの文字列参照を持つ C# デリゲート
マネージド c++ dll 経由でアンマネージド c++ dll を使用する C# アプリケーションを作成しました。アンマネージ dll には、そのパラメータの 1 つが であるコールバックがありますstd::string&
。
これをマネージ dll でラップする正しい方法が見つからないようです。を使用するString^
と、コールバックは機能しますが、C# アプリケーションは文字列から何も取得しません。を使用したときString^%
、関連していないように見える他の場所で物事がクラッシュし始めました(おそらくメモリ破損)。
だから私の質問は、これを行う正しい方法は何ですか?
ありがとう
directx - DirectXは管理されていますか、それとも管理されていませんか?
DirectXに関する基本的な情報が必要です。マネージAPIですか、それともアンマネージですか?誰かが私にこれを説明するリンクなどを提供できますか?
enums - C ++ / CLI:アンマネージド列挙型からマネージド列挙型へのキャスト
ネイティブコードから同じ値を含むenum
マネージコードに(C ++ / CLIで)キャストする正しい方法は何ですか?たとえばC++/ CLIのようにC#のキャスト方法を使用することとの違いはありますか?enum
enum
(int)