問題タブ [midl]

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

midl - IDL ファイルのコンパイル時に MIDL が識別子の大文字と小文字を変更する

次のような IDL のスニペットがあります。

...MIDL でコンパイルし、生成されたタイプ ライブラリを調べると、VirtualMachine(大文字の V) が (小文字の V) に変わっていvirtualMachineます。

たとえば、自分の coclass を呼び出すと、XirtualMachineすべて問題ありません。

なんてこったい?

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

windows - IUnknown から派生したインターフェイスを IDL でデュアルとしてマークする意味はありますか?

コードを確認すると、.idl ファイルの 1 つに興味深い定義が見つかりました。

から直接派生したインターフェイスIUnknownがデュアル インターフェイスになる可能性があるのはなぜですか? dual属性を削除すると何か壊れますか?

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

windows - タイプライブラリをインポートするときの奇妙な名前空間の追加

IStream*COM インターフェイスに受け入れるメソッドを追加したいと考えています。idl の抜粋は次のとおりです。

ファイルをコンパイルし.idl、typelib を別のプロジェクトにインポートします。

.tlbOLEView ファイルで を確認すると、typelibIStream内で宣言されているが宣言されていIUnknownないことがわかります。これにより問題が発生します。別のプロジェクトを呼び出そうとするとIMyInterface::LoadStream()、C++ で .csv に変換できないと表示IStream*されMyLibrary::IStream*ます。同時に、IUnknown について不平を言うことはありません。

MIDL が IStream 定義を typelib 内に配置し、それをグローバル定義として扱わないのはなぜですか?

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

c++ - midl で生成されたヘッダー ファイルで構造体を定義する

レガシー製品のビルドを自動化する過程にあり、壁にぶつかっています...

midl を使用して VC++ 6.0 でコンパイルされた .idl ファイルがあり、.tlb、.h、および .c ファイルを生成します。このファイルには、追加する手動のビルド手順があります。

生成された .h ファイルの MIDL_INTERFACE の直前。.h ファイルの残りの部分は定義を使用しており、これが追加されるまでコンパイルできません。

構造体定義 (推奨) を使用してヘッダー ファイルを自動生成する方法、または少なくともカスタム ビルド ステップを介してこのコード追加ステップを自動化する方法を探しています。

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

c++ - IDLファイルで名前の衝突が発生する原因は何ですか?

複数のインターフェースが定義されたidlファイルがあり、そのうちの2つには次のようなものがあります。

これらは2つの完全に無関係なインターフェースであり、たまたま同じ名前の1つのメソッドがあります(ただし、示されているように大文字と小文字は異なります)。すべて問題ないようですが、次のようなプロジェクトをコンパイルしようとすると、

存在しないというエラーが表示されます。電話すれば

それはうまくコンパイルされます。

どちらかのメソッドの名前を変更すると、コンパイルも正常に行われます。2つの異なるインターフェイスで名前の衝突が発生することはないと思いますが、それが起こっているようです。

そのうちの1つを名前変更するだけで修正できますが、問題を本当に理解したいと思います。誰かが私のためにそれを説明できますか?ありがとう

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

inheritance - MIDLの構造体継承

MIDLで定義された構造を継承および拡張しようとしています。インターフェイスの継承と同じ構文を使用しました。

しかし、コンパイラはエラーを生成します。

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

.net - midl.exe が mscorlib.tlb を読み込めない

midl を使用して idl ファイルを tlb に変換しようとしています。ただし、試してみると、次の警告が表示されます。

警告 MIDL2015: importlib で tlb を読み込めませんでした: mscorlib.tlb

その後、次のエラーが発生します。

エラー MIDL2337: 前方宣言が満たされていません: _Object.....

エラーは最初の警告によるものだと確信しています。別のマシンで同じコマンドを試してみたところ成功したので、idl ファイルが正しいことがわかりました。

.NET フレームワークをアンインストールして、問題が解決することを期待して再インストールしようとしましたが、効果はありませんでした。

私の質問は、midl が mscorlib.tlb をもう一度見つけられるようにするには、マシンで何を修正する必要があるかということです。

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

c# - Visual StudioがIStreamをswinterop.comtypesにマップするように、idlでIStreamを宣言するにはどうすればよいですか?

C#クライアントからストリームを取得して処理する必要があるCOMオブジェクトがあります。IStreamを使用する必要があるようです。だから私は私のidlを以下のように書きます。次に、MIDLを使用してtlbにコンパイルし、ソリューションをコンパイルして登録し、ライブラリへの参照をC#プロジェクトに追加します。

Visual Studioは、自分のライブラリにIStream定義を作成します。どうすればそれを止めて、COMTypes IStreamを使用できるようにできますか?3つの答えのうちの1つがあるようです:いくつかのインポートを追加します

  • IStreamを再宣言しないようにidlに追加します(MSCOREEをインポートするとそれは実行されますが、C#の問題は解決されません)
  • どういうわけか、Visual StudioでIStreamのエイリアスを作成しますが、これを行う方法がわかりません。
  • 私の考えはすべて完全に間違っているので、IStreamを使用するべきではありません

ヘルプ...ありがとう

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

c++ - scrrun.dll の ATL と型

Scripting::IDictionary** のパラメーターを持つメンバーを含む必要がある ATL プロジェクトにインターフェイスがありますが、スクリプト ライブラリが既定のライブラリに表示されないため、インターフェイスの説明を含む MIDL ファイルでは使用できません。私は常に scrrun.tlb を持っていて、MIDL で使用しようとしていますが、うまくいきません

コードはこちら: midl-code

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

windows - MIDL (定数) リファレンス

MIDL メソッド宣言に定数参照はありませんか????

例えば。

為に