問題タブ [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.

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

managed-c++ - Managed C++ のイベント: イベント、WindowEvents に関する問題

マネージ C++ (新規プロジェクト ウィザードの C++/CLR) を使用して、VisStudio 2008 アドインで作業します。

OnConnection() 関数で、WindowEvents コレクションにハンドラーを追加したいと考えています。

これを行う場合:
// イベントを接続する
EnvDTE::Events ^ events = _applicationObject->Events;
EnvDTE::WindowEvents ^winEvents = events->WindowEvents();

次のエラー メッセージが表示されます:
error C2660: 'EnvDTE::Events::WindowEvents::get' : function does not take 0 arguments

オブジェクト ブラウザでこれを見つけます:
public EnvDTE.WindowEvents WindowEvents(EnvDTE.Window WindowFilter = null) { get; }

私が間違っていることについてのヒントをありがとう...

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

c++-cli - マネージ C++ 構文

このマネージ C++ コードを C++/CLI に変換できません。誰かがポインターを与えることができますか (しゃれが意図されています)?

コードの後半で、Add(string) メソッドが呼び出されます。他の場所では、一部の C# コードで、

上記の ignoreStrings の型に何らかの形でキャストされる関数に渡されます。

私はこの構文を試しました:

ただし、その C# 配列からキャストすることはできず、add メソッドもありません。


編集:これが何らかの形で質問を変更することを期待して、より完全なコード...

他の場所では、C# コードから、次の呼び出しが行われます。

これは、C++ コードを次のように変換しようとしたものです。

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

c++ - C++ CLR 値型で pin_ptr が必要なのはなぜですか?

.NET 値型 (マネージド C++ 構造体) はスタックに格納されるため、ポインターをアンマネージド関数に渡すためにそれらを pin_ptr する必要があるのはなぜですか?

例えば。BYTE b[100];

最初に固定せずにアンマネージ関数に &b を渡すと、スタックが破損する可能性がありますか?

CLR スタックは、GC ヒープと同じように変更される可能性がありますか? CLR スタックはプロセッサ レジスタを使用するなどの異常な最適化を使用しているため、アンマネージ関数へのバッファとして使用するのに適していないと私は信じています。スタックに値の型を固定することに関する規則は不明確なようです。

この方法でバッファ配列をカーネル NTDLL 関数 NtfsControlFile に送信すると、破損しているように見えることに気付きました。値の型を固定すると、問題が解決します。ただし、API 呼び出しには使用しないでください。

したがって、最初に固定せずに、スタック上の任意の値型へのポインターをアンマネージ関数に渡すことは、基本的に安全ではありませんか?

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

.net - C++ .Net での String^ の理解

マネージ C++ コードで "^" 演算子がポインター演算子として使用されているのをどこかで見たのを覚えています。したがって、「^」は「*」演算子と同等である必要がありますよね??

私の理解が正しいと仮定すると、.Net を理解し始め、いくつかのサンプル プログラムをコーディングしたときに、次のようなコードに出くわしました。

私はこれを理解するのに苦労しています。

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

namespaces - 名前空間の問題のプライベート/パブリック クラス

これは、クラスをパブリックまたはプライベートとして定義する方法に関する質問です。

現在、名前空間内にさまざまなクラスが定義されており、それらのクラスの一部のみを外の世界に表示/使用できるようにしたいと考えています。

したがって、たとえば、以下のクラスがプログラム内の唯一のものである場合、main.cpp は MyPrivate クラスではなく、MyPublic クラスのみを表示/使用できるようにする必要があります。MyPrivate クラスを private として、MyPublic クラスを public として定義すればこれが達成できると思っていましたが、以下のコードは機能し、main.cpp は MyPrivate オブジェクトを宣言できます。

C++でこれを行うことは可能ですか?

MyPrivate.h:

MyPublic.h:

Main.cpp:

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

.net - VS2008では、(マネージ)C ++プロジェクトの「プラットフォームターゲット」をどこで構成しますか?

VS2008では、プロジェクトのプロパティに移動し、[ビルド]セクションをクリックして、[プラットフォームターゲット]ボックスを設定することにより、C#アセンブリがx86プラットフォームのみをターゲットにするように指定できます。

C ++で記述されたアセンブリに相当するものは何ですか?

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

.net - マネージド C++ メソッドへの参照によってアンマネージド C++ 構造体を渡すと、構造体が参照されるときにアクセス違反が発生する

私はこの構造を渡そうとしています:

このクラスの静的メソッドに:

この関数から:

64 ビット システムで、アドレス '0x000c' を読み取れないというアクセス違反が発生します。

現在、64 ビット システムでは、par の参照がヌル ポインターである場合、par.type の逆参照は 0x0c のアドレスになります。par がスタック上にあることを除いて、null ポインターを WriteField に渡していませんが、1 つ取得しているようです。

さて、マネージ C++ で、あるマネージ クラス インスタンス メソッドから別の静的メソッドを呼び出す場合、参照によってアンマネージ構造を渡しているという事実は、ある種のマーシャリングの問題に対して脆弱ですか?

管理されていない構造が管理されたコードによってどのように扱われるかを説明する Web ドキュメントはありますか?

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

managed-c++ - WinPEのマネージコード

Windows PE(Vistaまたは7)でプログラムを実行したい場合、どのレベルのマネージコードも使用できませんか?

dotNetコードを参照しないc++コードのみを使用できますか?

どうすればウィンドウを操作できますか?さまざまな操作を実行するには、user32.dllタイプのファイルを使用する必要がありますか?

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

visual-c++ - C++/CLI -- /clr オプションをオンにした場合の 0xc000007b (INVALID_IMAGE_FORMAT)

ffmpeg (libavcodec、libavformat、libavutil & swscale) を静的にリンクする C++/CLI 実行可能ファイルをビルドしようとしています。通常どおりにビルドすると (/clr がないため、CLR はサポートされません)、正常に動作します。ただし、CLR サポートを追加すると、0xc000007b で起動しなくなります。ただし、「Hello World」C++/CLI アプリは問題なく動作します。

おそらくBoost::Threadsでも同じことが起こりますが、ffmpegは純粋なCであるため、Boostを使用しているとは思えません。

私の設定:

  • Visual Studio 2008 プロフェッショナル SP1
  • Windows XP Pro SP3 (x86)
  • .NET フレームワーク 3.5 SP1

ありがとう、ロバート