問題タブ [unmanaged]

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

.net - double* を配列に変換する方法(6)

6 つの double の配列を返す関数があります。

この戻り値をマネージド コードでキャストしたいと思います。

次のエラーが表示されます。

どうすればいいですか?

ありがとう。

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

.net - Windows フォーム コントロール ライブラリ。マネージドおよびアンマネージド

私が書いている Windows フォーム コントロール ライブラリ プロジェクト (C++) は、アンマネージ dll を使用しています。管理されていない dll には、ヘッダー ファイル (チェシャ猫) があります。そして、それをコントロール ライブラリ プロジェクトに含めるだけです。そして、アンマネージ dll の関数を呼び出します (もちろん、適切なマーシャリングを使用して)。これにより、コンパイルおよびビルドが行われます。問題は、マネージ C++ winform アプリケーションであるスキャフォールディングのツール ボックスにコントロールを追加しようとすると、VS2005 が .Net モジュールではないと文句を言うことです。

Windows フォーム コントロールとして MFC dll を使用して変換している人々を見てきました。私は何を間違っていますか?.

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

c# - アンマネージ C++ クラス ライブラリを c# に公開する

私は実際に 2 つのイメージされていない C++ ライブラリを持っています。どちらもかなり大きいので、書き直すことは私にとって選択肢ではありません。

アンマネージ コードをラップするマネージ C++ ライブラリの作成に関する記事を読みました。しかし、どうやって始めればいいのか、また、これらすべてのものを 1 つのプロジェクトにまとめる方法がよくわかりません...

これを行う方法について、ステップバイステップのガイドやわかりやすい例はありますか?

ティア

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

c# - アンマネージ関数 char を呼び出すと、char * が返されます

アンマネージ C/C++ コード (dll) に、char 配列を含む構造体を返す関数があります。関数を呼び出したときにこの戻り値を受け取る C# 構造体を作成しました。そして、この関数を呼び出すと、「System.Runtime.InteropServices.MarshalDirectiveException」が発生します

これは C 宣言です。

これは C# の宣言です。

1 バイト ASCII を使用しています。

これを行う方法に関するヒントや解決策を誰かが持っていますか?

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

c# - C dll コードを C# にマーシャリングする

dll に次の C コード署名があります。

C 関数は、w、h、enc、lp、mp、および ep を変更できます (ただし、後者の 3 つは null になる可能性があり、何もしません。

私はC#で以下を使用しています

SystemAccessViolation が発生していますが、いつ問題が発生するのか完全にはわかりません。

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

.net - マネージド コードから考えられる最も基本的な C++ 関数の呼び出しに関する AccessViolationException

マネージド コードとアンマネージド コードの相互運用の使用方法を学ぼうとしていますが、4 時間のグーグル検索では乗り越えられない壁にぶつかりました。Visual Studio で 2 つのプロジェクトをまとめました。1 つは win32 exe を作成し、もう 1 つは Windows フォーム .NET アプリケーションを作成します。いろいろいじった後、C# コードで C++ コードを正しく呼び出すようになりましたが、ここから、そこに入るたびに AccessViolationException が発生し始めました。.cpp ファイルのコードは次のとおりです。

そして、これを呼び出す C# Windows フォーム アプリのコードは次のとおりです。

かなり単純ですよね?呼び出しは機能し、C++ コードにステップインできます (プロジェクトのアンマネージ デバッグを有効にしました) が、AccessViolationException で毎回行を作成する配列で停止します。実行可能ファイルを実行すると同じコードが正常に実行されます (c++ コードはコンソール アプリケーション プロジェクトにあり、_tmain 関数から呼び出してみましたが問題はありません) が、.NET から呼び出すと毎回失敗します。

ここに欠けている明らかなものがあるはずですが、チュートリアルを読んでも役に立つものは何も思いつきませんでした。その例外に関する問題の投稿のほとんどは、複雑なマーシャリングまたは GCHandles で問題を抱えている人々です。助けてくれてありがとう。

更新:あなたは真下にいましたが、それは奇妙です. 最初はこれを始めたとき、私はそれができないだろうと思っていました (実行可能ファイルの関数を呼び出す) が、試してみると、実際に機能しました。関数を実行可能ファイルに呼び出すことができるようですが、メモリを割り当てようとするとすぐに終了します。いずれにせよ、アドバイスのおかげで、今は正しく機能しているようです。

0 投票する
8 に答える
2661 参照

c++ - ANSI C++ がマルチスレッドをサポートしていない場合、アンマネージ C++ アプリをマルチスレッド化するにはどうすればよいですか?

C++ はマルチスレッドのネイティブ サポートを提供していないと聞いたことがあります。マルチスレッド C++ アプリは、マルチスレッド用のマネージ コードに依存していると思います。たとえば、Visual C++ アプリは MFC や .NET などを使用して、マルチスレッド機能を提供していました。さらに、これらのマネージ コード機能の一部またはすべては、アンマネージ アプリケーションでは使用できないと想定しています。しかし、管理されていないマルチスレッド アプリケーションについて読んだことがあります。これはどのように可能ですか?私の仮定のどれが間違っていますか?

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

interop - GetPhysicalMonitorsFromHMONITORが返すハンドルは常にnullです

Media Foundation SDKには、 C#を使用して実装しようとしているGetPhysicalMonitorsFromHMONITOR関数がありますが、運がありません...

返されたPHYSICAL_MONITOR[]で、関数はモニターの文字列の説明を返しますが、いくつかの不思議な理由により、hPhysicalMonitorハンドルは0のままです。

マイナーな変更を加えて、P / InvokeInteropAssistantを使用して署名を生成しました。

PHYSICAL_MONITOR構造またはその他の何かをさらに調整する必要がありますか?

ありがとうございました。

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

com - HOWTO: WindowsCE Compact Framework でアンマネージド C++ からマネージド C# インターフェイスを呼び出す

Windows CE 6 および Compact Framework のマネージ C# で記述された大量の新しいビジネスおよびコミュニケーション ロジックと組み合わせることで、新しい製品で使用したい UI を提供する広範なアンマネージ Windows CE 5 C++ コードがあります。

UI はビジネス ロジックを認識している可能性がありますが、ビジネス ロジックが UI を認識しないようにして、後でマネージ バージョンまたはフロントエンドとして選択したその他の UI に置き換えることができるようにする必要があります。

COM を Windows の世界でブリッジとして使用する方法を説明している記事を見つけましたが、WinCE の下で .NET CF に適用するのに苦労しています。過去に、タイプ ライブラリをインポートし、COM 呼び出し (CoInitialize()、CoCreateInstance()) を使用して、他の Windows プラットフォームのインターフェイスへのポインターを取得しました。同じ機能が WinCE で提供されていると仮定して、マネージ ライブラリの C# インターフェイスにアクセスするためのアンマネージ C++ ライブラリ。

これが私の問題です:タイプライブラリ。過去に '#import "SomeCPPLibrary.dll"' ステートメントを介して使用したため、マネージ C# ライブラリからは利用できません。これは .dll アセンブリに埋もれており、以前とは異なる方法で保存されているため、ライブラリ自体の #import を通じて直接利用することはできないと思います。typelib を #import できると思いますが、マネージ .dll から typelib を抽出する方法が見つかりません。インターフェイス定義ファイル (.idl) を一緒にハックして、プラットフォームの midl.exe を使用できるかもしれません。それから .tlb を生成するために、私の .idl とその結果の .tlb が実際に私の C# .dll にあるものと一致するという保証はありません。プラットフォーム midl.exe がこのように機能するかどうかはわかりませんが、機能すると仮定します。

  1. 私は間違った木を吠えていますか?対応する COM インターフェイスを介してアンマネージド C++ でマネージド C# インターフェイスを使用することは可能ですか?

  2. AssemblyInfo.cs ファイルで [assembly: ComVisible(true)] 属性を設定すると、マネージ アセンブリのすべてのインターフェイスが、AssemblyInfo.cs が定義する GUID を介してアンマネージ ワールドの COM を介して利用できるようになりますか?

  3. アンマネージ C++ ライブラリが #import できるように、マネージ .dll から typelib を取得するにはどうすればよいですか?

  4. マネージ C# ライブラリ プロジェクトをアンマネージ C++ ライブラリ プロジェクトの参照として追加しようとしましたが、うまくいきませんでした。このような状況では、そのような参照はまったく関係がありますか?

  5. アンマネージド C++ の世界からマネージド C# コードを呼び出すという基本的な問題を解決するためのより良い方法はありますか? ここで読んだのは、管理されていない/管理されているギャップを埋めるための管理された翻訳レイヤーを備えた混合モードのライブラリです。呼び出し応答速度は重要な要素であるため、これが良い戦略かどうかはわかりませんが、ある時点で UI をマネージド C# に書き直す予定であるため、長期的にはその方が良いかもしれません。より永続的なビジネス/通信ロジックをいじるのではなく、使い捨ての UI を使用しますか? この質問への回答に関係なく、好奇心以外の理由がなければ、COM の使用に関する問題を解決したいと思います。