問題タブ [interop]

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 に答える
2045 参照

c# - C# クラス ライブラリでヒープ エラーをデバッグするにはどうすればよいですか?

C++ アプリで COM を介して呼び出している C# ライブラリ モジュールでヒープ破損エラーが発生します。具体的なエラーは次のとおりです。

ヒープ: 解放された後、4b61be8 で変更されたヒープ ブロック 4b61bb8 を解放し
ます...
これは、ヒープの破損が原因である可能性があり、[app].exe またはそれがロードした DLL のバグを示しています。

コール スタックのトップは次のとおりです。

私の理解では、.NET はメモリの問題を軽減するものであり、メモリの問題を修正不可能にするものではないということでした。それでも、メモリエラーを引き起こすために何をしているのか、またはそれを修正しようとしている方法は考えられません。特定のモジュールは、Microsoft.VisualStudio.VCProjectEngine .NET コンポーネントを使用して、非常に単純な反復子で VC プロジェクト ファイルを反復処理しています。以前の約 100 回の呼び出しに成功した後、VCProject フィルター (フォルダー) でファイルを反復処理しているときに、foreach ステートメントで中断しています。壊れている実際のコードは次のとおりです。

どうすればこれをデバッグできますか?

アップデート:

純粋な C# コンソール アプリ (COM やネイティブ コードを含まない) から if を呼び出すと、次のようになります。

タイプ 'System.AccessViolationException' の未処理の例外が [component].dll で発生しました

追加情報: 保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。

これをデバッグする方法はまだわかりません。明らかに、どこかでメモリ エラーが発生しています...しかし、メモリ モデルが公開されていない純粋なマネージ コードでそれを追跡するにはどうすればよいでしょうか?

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

c# - MFC アプリケーションの C# コントロール

私は、MFC といくつかのサード パーティ コントロールを使用して Visual C++ で完全に記述されたアプリケーションのユーザー インターフェイスを担当しています。アプリケーションのルック アンド フィールを改善するために、C# (WinForms またはそれ以上の WPF) を使用したいと考えています。

やり方などアドバイスをいただきたいです。リンク、記事、例...

現在、ユーザー インターフェイスは 1 つのプロジェクトに分離されており、モジュール全体を CLR でコンパイルしたくありません。では、アーキテクチャの観点からそれをどのように管理する必要があるのでしょうか?

私はすでにこの件名についてインターネットを調べ、MSDN の情報を読みました。もっと詳しい情報が欲しいのですが・・・便利ですか?長所短所?「大きな」アプリケーションでこのアプローチをうまく使用しましたか? UI プロジェクト全体を CLR でコンパイルしたくありません...分離されたプロジェクトにすべての .NET コードを配置して、それを ui プロジェクトから呼び出すことはできますか? それを行う最良の方法は何ですか?

前もって感謝します。

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

c# - C# - Java 相互運用

C# コードと Java コードを相互運用するためのヒントを教えてください。相互運用を単純なものとして定義しましょう。C# で定義されたクラスのインスタンス化とメソッド呼び出しを (Java コードから) 許可し、場合によってはその逆も許可します。

これはネイティブでも可能ですか? (つまり、いくつかのプロキシ/スケルトン インターフェイス メカニズムなし)

最後に、どのプロキシ メカニズムを使用できますか? (つまり、両方の言語領域でサポートされています)

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

c# - C# メソッドを C++ メソッドに変換する

GPU で実行するために、一般的な C# コード構造を C++ CUDA コードにマッピングするためのさまざまなオプションを検討しています。システムの構造は次のとおりです (矢印はメソッド呼び出しを表します)。

C# プログラム -> C# GPU ライブラリ -> C++ CUDA 実装ライブラリ

GPU ライブラリのメソッドは次のようになります。

これは、各要素に対して関数を実行する ICollection<> 型の拡張メソッドです。ただし、私がやりたいことは、C++ ライブラリを呼び出して、GPU でメソッドを実行させることです。これには、何らかの形で関数を C++ コードに変換する必要があります。これは可能ですか?

詳しく説明すると、私のライブラリのユーザーが任意のコードを含むメソッドを (C# で) 実行した場合、このコードを CUDA で実行できるように C++ の同等のものに変換したいと考えています。これを行う簡単な方法はないと感じていますが、それを行う方法、または同じ効果を達成する方法があるかどうかを知りたい.

私が疑問に思っていたことの 1 つは、式で変換する関数をキャプチャし、これを使用して C++ の同等物にマップすることです。誰でもこれについて経験がありますか?

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

.net - 相互運用コントロールがXPスタイルを取得しない

VS2005で相互運用機能のユーザーコントロールを作成しました。ユーザーコントロールがVB6内に表示されている場合、XPスタイルをピックアップ/使用しません(ボタンとタブはVB6ボタン/タブのように見えます)。

XPスタイルをVB6でコントロールと連動させるにはどうすればよいですか?

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

c# - C#からWin32 C /C++構造体メンバーにアクセスする

ネイティブdllまたはexeが何らかのフックを使用してC#から実行しているWin32API呼び出しをインターセプトしています。この特定のケースでは、user32.dllのDrawText()に興味があります。Win32APIでは次のように宣言されています。

LPRECT構造体には、次のシグネチャがあります(Win32 APIでも)。

LONGは、32ビットシステムでの32ビット整数のtypedefです(64ビットシステムについてはわかりません。私は32ビットWindowsを使用しているため、現時点では関係ありません)。この構造体のメンバーにアクセスできるようにするために、C#コードで宣言しました...

...そしてこのRECT構造体を使用してP/Invokeの署名を書きました:

構造体はC/C ++のような参照型ではなく、C#の値型であるため、ここではref修飾子が必要です。

ただし、rect.top rect.leftetcを使用すると、ほとんどの場合0が返されます。これが正しくないことはわかっています。しかし、数え切れないほどの時間をグーグルで調べて、さまざまなことを試した後、私はこの単純なものを機能させることができませんでした。

私が試したこと:

  • RECTメンバーにさまざまなプリミティブを使用する(int、long、short、UInt32 ...)。実際、これが型の問題ではないことは明らかです。いずれにせよ、0ではなく文字化けした数字が表示されるはずだからです。
  • ref修飾子を削除します。rect.leftは、その値ではなくrectへのポインターを正しく返すため、これも愚かです(絶望的な時間、絶望的な対策)。
  • unsafeコードブロックを試しました。動作しませんでしたが、実装を間違えた可能性があります(何をしたか覚えていません)。このアプローチは、一般的にCOMとWin32でのトリッキーなポインターの状況のた​​めに予約されていますが、とにかく私の場合はやり過ぎです。
  • [MarshallAs]RECTのメンバーの前に追加してみました。違いはありませんでした。
  • 値をいじってみましたPack。変わりはない。

私は非常に簡単で簡単なものを見逃しているとかなり確信していますが、それが何であるかわかりません...

どんな助けでも大歓迎です。ありがとうございました。

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

.net - 誰かが .Net で Primary Interop Assembly を使用する利点を説明できますか?

この概念は私にとって新しいものであり、同僚が提案しました。残念ながら、私は彼が何を話しているのか分かりませんでした。誰かが私を啓発できますか?

0 投票する
5 に答える
8724 参照

c# - SendMessage メッセージ番号の説明?

Windows SendMessage メソッドを使用して、テキスト エディターでさまざまなことを実行することに成功しましたが、毎回、他の人が提案したコードをコピーして貼り付けているだけで、それが何を意味するのかよくわかりません。パラメータである不可解なメッセージ番号が常に存在します。これらのコード番号が何を意味するのかを知るにはどうすればよいのでしょうか?実際に何が起こっているのかを理解し、(願わくば)将来はもう少し自給自足できるようにするにはどうすればよいでしょうか? ありがとう。

最近の例:

0 投票する
5 に答える
2474 参照

python - Ruby から Python へのブリッジ

Windows、Linux、およびおそらく他のプラットフォームで、いくつかの Python コードといくつかの Ruby コードをやり取りすることに興味があります。具体的には、Python から Ruby のクラスにアクセスし、それらのメソッドを呼び出し、データにアクセスし、新しいインスタンスを作成したいと考えています。

これを行う明白な方法は、XML-RPC や CORBA などを使用することですが、他の方法にも興味があります。

同じシステム上でローカルに、またはネットワークを介してリモートで相互に通信する Python と Ruby からコードを取得するために、他の人々は何をしましたか?

前もって感謝します。

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

c# - F# で宣言された名前空間は、c# プロジェクトでは使用できないか、オブジェクト ブラウザーからは表示できません。

F# で宣言された名前空間は、c# プロジェクトでは使用できず、オブジェクト ブラウザーからも表示できません。

通常の F# ライブラリ プロジェクトをビルドしましたが、プロジェクトをビルドして C# プロジェクトに参照した後でも、目的の名前空間にアクセスできません。

また、オブジェクト ブラウザでも表示できません。ビルドされていないというエラーが表示されます。9月のリリースで実行していますが、誰かが私のエラーを指摘できますか?

F# バージョン 1.9.6.0

(6) 編集: dll を直接参照すると問題が解決しました。プロジェクトを参照するとコンパイルできますが、インテリジェンスは機能しません。dll が直接参照されている場合、インテリジェンスは完全に機能します。


これは、.fs ファイルにあるコードです。


(5) 編集: ReSharper 4.0 が問題になる可能性はありますか?

(4) 編集: オブジェクト ブラウザーが結果のアセンブリを読み取れないと言うとき、オブジェクト ブラウザーでアセンブリを開こうとすると、プロジェクトがまだビルドされていないことを示すエラーが表示されることを意味します。それでも、リフレクターを使用してアセンブリを読み取ることができます。

(3) 編集: Reflector は dll を逆アセンブルできますが、Object Browser はそれを読み取ることができません。

(2) 編集: F# バージョンを 1.9.6.2 にアップグレードしましたが、結果は同じです

(1)編集:dllをC#に逆アセンブルできました:(ここではすべて問題ないようです)