問題タブ [mixed-mode]

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.

0 投票する
1 に答える
189 参照

.net - Windows は、パス、GAC、またはレジストリにない管理されていない DLL を見つけることができますか?

これらの DLL がアプリケーション ディレクトリまたは Windows パスにない場合、Windows は混合モード アプリケーションのアンマネージ (非 COM) DLL を見つけることができますか? VS 2008 がパスに表示されないことに気付きました。これがどのように行われるのか疑問に思いました。

0 投票する
2 に答える
1083 参照

c# - C ++ COM C#混合モードの相互運用

アンマネージC++からC#ライブラリ実装を呼び出すためのオプションを理解しようとしています。

私の最上位モジュールは、管理されていないC ++ COM /ATLdllです。既存のマネージドC#dllの機能を統合したいと思います。私は持っており、両方のライブラリのソースを再コンパイルできます。

MSDNのこの概要やこのSOの質問などの記事を読んだことで、ネイティブC ++コードがC#ライブラリを呼び出すことができる「混合モード」dllを作成できる可能性があることを理解しています。

このアプローチについていくつか質問があります。

  1. これを設定するにはどうすればよいですか?既存のCOM/ATLプロジェクトのいくつかのプロパティを変更して、C#モジュールを使用できるようにすることはできますか?
  2. これらの混合モード呼び出しは、COM相互運用呼び出しとパフォーマンスがどのように異なりますか?モジュール間の変換やディープコピーを防ぐために使用できる一般的な文字列形式はありますか?
  3. このdllが混合モードで作成されている場合でも、COMクライアントによって同じ方法でインターフェイス/使用できますか、それとも混合モードに対応する必要がありますか?
  4. このCOMオブジェクトをロードするときに、CLRを含めるとかなりのオーバーヘッドが発生しますか?

私はWindows開発に不慣れなので、質問文の何かを明確にするか修正する必要がある場合はコメントしてください。

前もって感謝します。

0 投票する
3 に答える
384 参照

.net - 私のアプリケーションは管理されていません。マネージコードの導入はどこから始めればよいですか?

私のアプリケーション全体(20MBの実行可能ファイルを備えたかなり大きい)は、アンマネージC++で記述されています。マネージコードを使用する利点がはっきりとわかるので、アプリケーションにマネージコードを導入したいのですが、どこから始めればよいですか?

C ++ / CLIの使用を簡単に開始して、アプリケーションの他の部分とリンクできますか?(C ++ / CLI構文はかなり「エキゾチック」に見えますが)。

または、C#に移行する方が良いのですが、これをアンマネージC ++コードと「リンク」するための最良の方法は何ですか?

/clrオプションを使用してすべてのC++コードをコンパイルすることは意味がありますか?これは機能しますか?

マーシャリングについて心配する必要がありますか?これはオーバーヘッドをもたらしますか、それともパフォーマンスを低下させることなくマネージドとアンマネージドを切り替えることができますか(20年前にFortranとCを混合したときと同じように)。パフォーマンスは、数ギガバイトのメモリを処理することがある科学的なアプリケーションであるため、私のアプリケーションでは非常に重要です。

または、ユーザーインターフェイスを再設計し、これをC#で記述し、アプリケーションの残りの部分(計算ロジック、ビジネスロジック、データベースインターフェイスなど)をアンマネージC ++で保持することだけが意味がありますか?

私のアプリケーションは時々数ギガバイトのメモリを処理する必要があるので、64ビットのバリアントがあります。64ビットのマネージコードを使用するのは簡単ですか?それだけのメモリが使用されている場合でも、ガベージコレクタは効率的ですか?

簡単に言うと、どこから始めればよいですか?

パトリック

0 投票する
2 に答える
1337 参照

.net-4.0 - .net 2.0コンポーネントを使用して.net 4.0アプリケーションからCastle Windsorを使用して「ComponentActivatorException」を取得する

VS2010 で開発されているアプリケーションがあり、構成ファイルを介して Castle-Windsor IoC を利用しています。

私が登録しているコンポーネントの 1 つは、これも VS2010 で開発されたもので、.net 2.0 コンポーネント (LeadTools) を参照しているため、2.0 プロジェクトを再コンパイルすることはできません。ラッピング コンポーネントの登録が完了すると、「ComponentActivatorException」が発生し、「System.TypeInitializationException」がラップされ、「System.IO.FileLoadException」がラップされ、「混合モード アセンブリはバージョン 'v2 に対してビルドされています」というメッセージが表示されます。ランタイムの .0.50727' であり、追加の構成情報なしでは 4.0 ランタイムにロードできません。"

次のように、ランタイム宣言をアプリケーションの構成ファイルに追加しました。

これは、ラッピング コンポーネントが Windsor に登録されていない場合は正常に機能しますが、それ以外の場合はディレクティブを無視しているように見えます。

ありがとう!

0 投票する
1 に答える
306 参照

.net - 混合モード C++ アプリケーション用のメモリ デバッガー

大規模な C++ 混合モード アプリケーション (VC++ 2005、CLR サポート: /clr:oldsyntax) を維持する必要があります。プログラムに多数のメモリ リークがあると思われますが、手動で見つけるのは困難です。ネイティブ C++ アプリケーションの場合、Purify (および Linux では Valgrind) を使用します。

残念ながら、Purify は混合モードのアセンブリをサポートしていません。混合モード アセンブリをサポートするまともなメモリ デバッガを知っている人はいますか?

0 投票する
4 に答える
29851 参照

asp.net-mvc - ASP.NET MVC と混合モード認証

ユーザーが Windows 認証またはフォーム認証を使用して ASP.NET MVC Web アプリケーションに対して認証できるようにする必要があるというシナリオがあります。ユーザーが内部ネットワーク上にいる場合は Windows 認証を使用し、外部に接続している場合はフォーム認証を使用します。このために ASP.NET MVC Web アプリケーションをどのように構成すればよいかという質問をする人をかなり多く見かけましたが、完全な説明は見つかりませんでした。

これがどのように行われるかについて、誰かがコード例で詳細な説明を提供できますか?

ありがとう。

アラン・T

0 投票する
1 に答える
1615 参照

access-violation - /clr ビルド DLL を使用するネイティブ C++ アプリケーションを実行するとアクセス違反が発生する

メイン アプリケーション セグメントがアンマネージド MFC であり、マネージド (C# DLL) とアンマネージド コード間の通信を橋渡しする /clr フラグでコンパイルされた C++ DLL を呼び出すように、レガシ混合 (マネージド DLL とアンマネージド DLL) アプリケーションを再編成しています。 . 残念ながら、私の変更により、アプリケーションの InitInstance() が呼び出される前にアクセス違反が発生しました。これにより、デバッグが非常に困難になります。私が得る唯一の情報は、次のスタック トレースです。

だから、ここに私が試したいくつかのシナリオがあります。
- Exceptions->Win32 Exceptions->c0000005 Access Violation をオンにして、Thrown 時にブレークします。私が得る最も詳細は、上記のスタックトレースからのものです。F10 でアプリケーションを試してみましたが、ブレークポイントに到達する前に失敗し、上記のスタック トレースで失敗します。

- ブリッジ DLL をスタブ化して、bool を返すメソッドが 1 つだけになるようにし、そのメソッドが false を返すようにコーディングしました (C# コードは呼び出されません)。

スタブ化された DLL が /clr フラグを使用してコンパイルされている場合、アプリケーションは失敗します。/clr フラグを指定せずにコンパイルすると、アプリケーションが実行されます。

- マルチドキュメント アプリケーション用の Visual Studio ウィザードを使用してスタブ MFC アプリケーションを作成し、DllPassthrough::IsFailed() を呼び出しました。これは、DLL のコンパイルに /clr フラグを使用しても成功します。 - 次のメモAccess violation when using c++/cli

で概説されているように、winmm.lib で手動 LoadLibrary を実行しようとしました。アプリケーションはまだ失敗します。

それで、私の質問は問題を解決する方法ですか?ヒント、戦略、または以前の事件。それに失敗した場合、アクセス例外の原因となっているコード セグメントまたはライブラリに関する詳細情報を取得するにはどうすればよいでしょうか? LoadLibrary 呼び出しを行うなど、より複雑な回避策を試す場合は、失敗したライブラリに絞り込みたいと思います。

ありがとう。ところで、私たちは Visual Studio 2008 を使用しており、プロジェクトはマネージ セクションの .NET 2.0 フレームワークに対してビルドされています。

0 投票する
6 に答える
19461 参照

.net - C++/CLI 混合モード DLL の作成

C++/CLI ラッパー層が必要なネイティブ C++ DLL があります。私が理解したことから、単純に C++/CLI クラスをプロジェクトに追加した場合、VS は混合モードとしてコンパイルされますが、VS はマネージ コードに触れていないように見えるため、明らかに間違っていました。

では、既存のネイティブ コード ベースが与えられた場合、どの .NET 言語からでもそのコードにリンクできるようにするには、混合モード DLL を作成するために正確に何をする必要がありますか?

*私のネイティブ コードは、P/Invoke できない C++ クラスを使用しているため、これを行う必要があります。

0 投票する
2 に答える
820 参照

interop - C++/CLI コードの一部をネイティブとしてコンパイルし、一部をマネージドとしてコンパイルするにはどうすればよいですか?

C++/CLI でアンマネージ タイプ ライブラリをロードするために LoadTypeLib を呼び出しています。一部のコード領域をマネージドとしてコンパイルし、一部のコード領域をアンマネージド (ネイティブ) としてコンパイルし、混合モード クラス ライブラリを実行可能として形成する必要があります。

マネージドおよびネイティブとしてそれぞれコンパイルするには、どの部分をマネージドおよびアンマネージド (ネイティブ) にする必要がありますか?

0 投票する
2 に答える
1959 参照

.net - マネージ C++/MFC とアンマネージ C++/MFC を 1 つの dll に混在させることはできますか?

以前は、C++ (および MFC) で記述された同じエンジンを呼び出す必要がある MFC (VC6)、VB6、および C# アプリケーションのソフトウェアがありました。エンジンは速度のために C++ を必要としました。当時、3 つすべてがマーシャリングなどの問題を最小限に抑えて COM を使用できるため、インターフェイスとして COM を使用することにしました。

私たちの MFC アプリケーションは現在非推奨であり、最近 VB6 をダンプすることを決定したため、残っているのは C# です。

COM エンジンをそのままにしておくこともできますが、COM 登録などから離れて、管理されたインターフェイスを操作できるようにするとよいでしょう。COM 登録は、ユーザーのマシンに問題がある場合、サポートの問題を引き起こすことがあります。

既存のアンマネージ C++/MFC と .NET フロント エンド インターフェイスを備えた dll を持つことは可能ですか?