問題タブ [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 に答える
9362 参照

c# - P/InvokeとC++ラッパーのパフォーマンスの違い

P / Invokeを学習する過程で、私はこの前の質問をしました:

ポインタが関係しているときにP/Invokeする方法

ただし、マネージC ++でラッパーを作成するよりも、C#でP/Invokeを使用することの意味をよく理解していません。C#でP / Invokeを使用して同じDLLを作成すると、埋め込みリソースでDLLImportを使用できるため、インターフェイスがよりクリーンになりますが、マーシャリングを自分で行うネイティブDLLのマネージC ++ラッパーの方がパフォーマンスが向上しますか?

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

c# - C++ からマネージド (C#) 関数を呼び出すにはどうすればよいですか?

my_cs_dll.dll静的メンバー関数を持つ静的クラスを定義するC# DLL ファイル プロジェクト ( ) があります。

を使用している C++ DLL プロジェクトもあります/clr

C++ プロジェクトの共通プロパティ参照セクションに参照を追加しました'my_cs_dll.dll'(コピー ローカル/コピー依存関係はどちらも True)。

'my_cs_dll.dll'また、C++ プロジェクトの構成プロパティ C/C++ の一般的な 'Resolve#using References' セクションにパスを追加しました。

my_cs_dll.dllすべてがエラーなしでビルドされますが、実行時に、アセンブリが見つからないと主張するシステムから「System.IO.FileNotFound」例外が発生し続けます。

どちらの DLL ファイルも、実行しているディレクトリと同じディレクトリに確実に存在します。

上記の設定であらゆる種類のバリエーションを試し、管理された/管理されていない相互運用で見つけることができるすべてを読みましたが、何が間違っているのか頭を悩ませているようです...

Visual Studio 2008 と .NET 3.5 を使用しています。

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

c# - オブジェクト/クラスの配列がユーザー定義クラスで失敗する

C++ の知識をもう少し持っている人が私を助けてくれることを願っています。Managed C++ DLL で作成したクラスから C# でオブジェクトの配列を作成しようとしています。何が起こっているのかわかりません。アプリケーションを実行し、クラスの配列をセットアップしてビルドすることはできますが、配列から関数を呼び出すと、マネージ DLL が調査されません。私はそれを追跡しましたが、単に機能しません。アプリケーションがエラーで失敗することもありません。興味深いことに、クラスの配列を削除し、すべてが正常に機能してからクラスを開始しただけです。これを修正する方法を教えてください。

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

c# - .NETプロジェクトでネイティブDLLをコピーするための最もクリーンな方法

7つのネイティブC++DLLを必要とするマネージC++プロジェクトを参照するC#GUIアプリケーションがあります。これらの7つのDLLを最終的なプロジェクト出力にコピーするための最もクリーンな方法を探しています。

機能するもの
すべてのDLLをC#アプリケーションに追加し、次のように指定します。

ビルドアクション=="コンテンツ"
出力ディレクトリにコピー==常にコピー"

これにより、プロジェクトのベースフォルダがDLLの混乱になる場合があります。これらはすべて、参照されるプロジェクトの要件であり、そのプロジェクト自体ではありません。

動作しないもの

  • 上記の設定で「必須DLL」という名前のフォルダにこれらのDLLを追加します。出力内の同じ名前のフォルダーにコピーされるため、誤った場所に配置されます。出力ディレクトリを指定する方法がわかりません。
  • 埋め込みリソース:C#P / Invokeでは、参照しているDLLを埋め込みリソースとして追加できます。DLLは最終的なライブラリ内に埋め込まれます。Managed C ++ではこの可能性は見られず、参照チェーンで機能するかどうかさえわかりません。
  • ManagedC++プロジェクト内のコンテンツとしてDLLを追加します。ファイルは出力ディレクトリにコピーされません。

この場合の最良の解決策は何ですか?可能であれば、マネージC ++プロジェクトが独自のDLL要件を処理できるようにし、できればプロジェクトが複数のアプリケーションで使用されるのを妨げない方法で処理できるようにしたいと思います。

クリーンなプロジェクトを作成する限り、プロジェクトのサブフォルダー内にすべてのコードファイルを挿入し、ルートにDLLを配置して、最初のソリューションを機能させる方がよいでしょうか。

解決策:
Josephからのビルド後の提案を使用して、次のコマンドは「必須DLL」フォルダーを使用するためのトリックを実行します。

xcopy "$(ProjectDir)Required DLLs*。*""$(TargetDir)" / Q / Y

/ Qは個々のファイルを出力から非表示にし、/Yは上書きプロンプトを抑制します。

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

ruby - マネージC++でRuby1.9を使用するにはどうすればよいですか?

ルビーを使用するドットネットライブラリを作成しようとしています。このために、ルビーの静的ライブラリをリンクしていますが、LNKエラーが発生します。

よろしくお願いします。VisualStudio2008を使用しています。

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

c++-cli - C++/CLI アセンブリが混在する混乱

管理されたメタデータ (Reflector で表示) からネイティブのプレースホルダー定義を非表示にする方法はありますか?

/clr を使用してコンパイルされたファイルと、/clr を使用せずにコンパイルされたファイルを含む混合モードの C++/CLI アセンブリを作成しています。

ネイティブ コードでのみブーストと MFC を使用していますが、ブースト/MFC ヘッダーは引き続きマネージ コード ファイルに #include する必要があります。これが完了するとすぐに (#pragma unmanaged ブロックにあるかどうかに関係なく)、boost および ATL (別名 MFC) からのすべての名前空間とクラス名 (実際の実装はありません) が、組み立て。

これは深刻な問題ではありません (結局、問題なく動作します) が、ごちゃごちゃしているように見えます。それを取り除く方法はありますか?

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

.net - Windows フォーム タイマーのバグまたは不適切な使用法

Windows フォームを使用して小さな OpenGL アプリケーションをプログラミングしているときに、プロファイラーを使用していて、かなり不安定だと思われるものを発見しました。

System::Windows::Forms::Timerを使用して、マウスのアイドリングとその他のユーザー入力の組み合わせを検出しています。ティック機能は便利ですが、タイマーを「リセット」したい場合があります。これを直接行うことはできませんが、次のようにすることで正しい効果が得られます。

タイマー間隔は 50ms です。ここでの「リセット」コードは、30 ミリ秒ごとに実行されることがあります。驚いたことに、これは非常に負担のかかる作業です。私のプログラム実行の 30% は、多くの場合、この 2 行で行われます。そして、これらの 2 つの行を頻繁に呼び出しているわけではありません。特定の不自然な状況では、このコードは例と同じくらい頻繁に呼び出されますが、それ以上は呼び出されOpenGLSwapBuffers()ません。これは、これら 2 行のコストがレンダリング ループ全体の約半分であることを意味していると解釈します。

現在、回避策を使用していますが、タイマー メソッドはもう少しエレガントです。私は非常に興味があります.なぜこれらの2行は計算コストが高いのですか? 私は何が欠けていますか?タイマーをリセットするより良い方法はありますか?

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

c++ - C++ での動的メモリ割り当て

動的メモリ割り当てに関して、「削除」と「破棄」C++ 演算子の違いは何ですか?