問題タブ [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.
midl - IDL ファイルのコンパイル時に MIDL が識別子の大文字と小文字を変更する
次のような IDL のスニペットがあります。
...MIDL でコンパイルし、生成されたタイプ ライブラリを調べると、VirtualMachine
(大文字の V) が (小文字の V) に変わっていvirtualMachine
ます。
たとえば、自分の coclass を呼び出すと、XirtualMachine
すべて問題ありません。
なんてこったい?
windows - IUnknown から派生したインターフェイスを IDL でデュアルとしてマークする意味はありますか?
コードを確認すると、.idl ファイルの 1 つに興味深い定義が見つかりました。
から直接派生したインターフェイスIUnknown
がデュアル インターフェイスになる可能性があるのはなぜですか? dual
属性を削除すると何か壊れますか?
windows - タイプライブラリをインポートするときの奇妙な名前空間の追加
IStream*
COM インターフェイスに受け入れるメソッドを追加したいと考えています。idl の抜粋は次のとおりです。
ファイルをコンパイルし.idl
、typelib を別のプロジェクトにインポートします。
.tlb
OLEView ファイルで を確認すると、typelibIStream
内で宣言されているが宣言されていIUnknown
ないことがわかります。これにより問題が発生します。別のプロジェクトを呼び出そうとするとIMyInterface::LoadStream()
、C++ で .csv に変換できないと表示IStream*
されMyLibrary::IStream*
ます。同時に、IUnknown について不平を言うことはありません。
MIDL が IStream 定義を typelib 内に配置し、それをグローバル定義として扱わないのはなぜですか?
c++ - midl で生成されたヘッダー ファイルで構造体を定義する
レガシー製品のビルドを自動化する過程にあり、壁にぶつかっています...
midl を使用して VC++ 6.0 でコンパイルされた .idl ファイルがあり、.tlb、.h、および .c ファイルを生成します。このファイルには、追加する手動のビルド手順があります。
生成された .h ファイルの MIDL_INTERFACE の直前。.h ファイルの残りの部分は定義を使用しており、これが追加されるまでコンパイルできません。
構造体定義 (推奨) を使用してヘッダー ファイルを自動生成する方法、または少なくともカスタム ビルド ステップを介してこのコード追加ステップを自動化する方法を探しています。
c++ - IDLファイルで名前の衝突が発生する原因は何ですか?
複数のインターフェースが定義されたidlファイルがあり、そのうちの2つには次のようなものがあります。
これらは2つの完全に無関係なインターフェースであり、たまたま同じ名前の1つのメソッドがあります(ただし、示されているように大文字と小文字は異なります)。すべて問題ないようですが、次のようなプロジェクトをコンパイルしようとすると、
存在しないというエラーが表示されます。電話すれば
それはうまくコンパイルされます。
どちらかのメソッドの名前を変更すると、コンパイルも正常に行われます。2つの異なるインターフェイスで名前の衝突が発生することはないと思いますが、それが起こっているようです。
そのうちの1つを名前変更するだけで修正できますが、問題を本当に理解したいと思います。誰かが私のためにそれを説明できますか?ありがとう
inheritance - MIDLの構造体継承
MIDLで定義された構造を継承および拡張しようとしています。インターフェイスの継承と同じ構文を使用しました。
しかし、コンパイラはエラーを生成します。
.net - midl.exe が mscorlib.tlb を読み込めない
midl を使用して idl ファイルを tlb に変換しようとしています。ただし、試してみると、次の警告が表示されます。
警告 MIDL2015: importlib で tlb を読み込めませんでした: mscorlib.tlb
その後、次のエラーが発生します。
エラー MIDL2337: 前方宣言が満たされていません: _Object.....
エラーは最初の警告によるものだと確信しています。別のマシンで同じコマンドを試してみたところ成功したので、idl ファイルが正しいことがわかりました。
.NET フレームワークをアンインストールして、問題が解決することを期待して再インストールしようとしましたが、効果はありませんでした。
私の質問は、midl が mscorlib.tlb をもう一度見つけられるようにするには、マシンで何を修正する必要があるかということです。
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を使用するべきではありません
ヘルプ...ありがとう
c++ - scrrun.dll の ATL と型
Scripting::IDictionary** のパラメーターを持つメンバーを含む必要がある ATL プロジェクトにインターフェイスがありますが、スクリプト ライブラリが既定のライブラリに表示されないため、インターフェイスの説明を含む MIDL ファイルでは使用できません。私は常に scrrun.tlb を持っていて、MIDL で使用しようとしていますが、うまくいきません
コードはこちら: midl-code
windows - MIDL (定数) リファレンス
MIDL メソッド宣言に定数参照はありませんか????
例えば。
為に