問題タブ [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 - インターフェイスメソッドパラメータとしてのMIDL複合型
IDLにインポートできない複雑な型を処理するための良い解決策があるかどうか知りたいです。私の最大の関心事は、シミュレートされた命令に_m128ベクトル型を使用することです。XMVECTOR。__declspecはmidlコンパイラによって認識されないため、__m128データ型をインポートすることは問題外です。これを行うためにwire_marshalを使用することを検討しましたが、__m128タイプのtypedefを認識する必要があると思います。Wire_marshalで使用するためにXMVECTORをforeword_declareできる方法がある場合、私はそれをどのように行うかについて最も曖昧ではありません。
リフレクションのデータ型をカプセル化することになるので、型をカプセル化して非表示にすることを考えました。ここでは、COMインターフェイスとC ++インターフェイスの両方から継承するなど、いくつかのアイデアを試してみました。ここでは、あまり有望に見えたものはありません。
多くの人が私にCOMを使用しないように言ってきました、そして私は正直にコーディングせずにこのことを理解しようとして多くの時間を費やしました。私のロジックでは、COMを使用することで多くの利点が見られ続け、MyCOMを含む代替手段は、同じように時間がかかり、問題に満ちているように見えます。これがCOMの使用に関する私の最大の問題である場合、序文を動かし続ける必要がありますか、それとも、グラフィック表示とリアルタイムの計算モデリングへの依存を念頭に置いて、ソリューションによってこのアプリケーションの速度が低下しますか?レンダーファームやクラウドなどの規模で何かをすることを検討しています...私は大声で話しますが、私は初心者であることを知っています。研究の!
thx、BekaD:
visual-studio - How does Visual Studio determine the order to compile IDL files?
I have a COM project that contains a number of IDL files, some of which are imported into other ones. How does Visual Studio decide which ones to compile (using MIDL) first?
I want to control the order. I have a master IDL file which contains my library declaration with several imports, and I get a build error if it is not the first one compiled.
(If any of this sounds really weird... I'm new to COM/ATL, and it's really, really confusing).
visual-studio-2010 - MIDL コンパイル エラー (およびおそらく idl ファイル生成に関する質問)
アプリケーションを VS2008 から VS2010 に移行することを検討しています。
「属性付きプログラミング」でいくつかの COM オブジェクトを生成すると、IDL が自動的に生成されます。
両方のファイルのインポート ディレクティブが異なり、VS2010 でコンパイルが失敗します。
VS2008 では、次のようなものが生成されます。
VS 2010 で
VS2010 で IDL をコンパイルすると、次のエラーが生成されます。
「wincrypt.idl」インポート ディレクティブを手動で削除すると、コンパイル エラーが削除されますが、idl は自動生成されるため、これは解決策ではありません。
2 つの IDL が異なる理由と、インポート ディレクティブを追加する責任がある理由がわかりません。またはMIDLコンパイルエラーを修正する方法さえ。
何か案は ?
前もって感謝します。
最大。
com - 多くの IDL インターフェイスを備えた COM タイプ ライブラリで定義を管理する
100 を超えるインターフェイスを備えた COM タイプ ライブラリを作成しています。すべてのインターフェイスとコクラスを 1 つのファイルで定義するのは合理的ではありません。IDLlibrary
ファイルは何千行にもなります。そのため、各インターフェイスを独自のファイルに入れ、import
s を使用してその依存関係を満たすというアイデアを試しています。
この多くのインターフェイスを管理するには、どのような戦略を使用できますか? どこでもディレクティブを使用しようとimport
していますが、それらを TLB に含めようとして行き詰まっています。で試してみ#include
ましたがlibrary
、依存関係がおかしいようです。
例A.idl
例B.idl
ExampleLibrary.idl
atl - 外部タイプ ライブラリから IDL にインターフェイスをインポートする
ATL と Microsoft の IDL を使用して記述した COM インターフェイスを備えた 2 つのタイプ ライブラリがあります。あるライブラリのインターフェイスを別のライブラリのインターフェイスから継承したいと考えています。
基本的には、Stevenが VS C++ で .tlb 型を使用してインターフェイス メソッドを作成するにはどうすればよいですか? で説明したのと同じことをしたいと思います。. 彼に答えた唯一の人は、質問を理解していないようでした。
コードでやりたいことは次のとおりです。
一部のライブラリ DLL/TLB
ISomeInterface.idl
SomeLibrary.idl
SomeOtherLibrary DLL/TLB
ISomeOtherInterface.idl
SomeOtherLibrary.idl
MIDLimport
ディレクティブは、IDL ファイルのインポート時にのみ機能し、DLL と TLB しかありません。定義importlib
内でしか機能しないため、使用できません。MIDL コンパイラは、Microsoft の C++ 、、および属性をlibrary
認識しません。import
importidl
importlib
何をすべきか?
visual-studio - oaidl.idlおよびocidl.idlの再コンパイルを防止
多数の IDL ファイルを含む COM/ATL プロジェクトがあります。これらのIDLファイルのほとんどは、import
oaidl.idlおよびocidl.idlです。
プロジェクトをコンパイルするたびに、Visual Studio は MIDL を呼び出して oaidl.idl と oidl.idl... を再コンパイルします。これら 2 つの IDL ファイルは最終的に何度も再コンパイルされるため、プロジェクトのコンパイルに時間がかかります。
Visual Studio で oaidl.idl と ocidl.idl を一度だけコンパイルするように強制する方法はありますか?
com - Midl を使用して .idl から .tlb を作成すると「型指定が必要」になる問題
私は、COM Interop として知られる野獣と長期にわたって遭遇してきました...
現在、OLE/COM オブジェクト ビューアによって生成された .idl ファイルから .tlb を生成しようとしています。ただし、Midl.exe を実行してコンパイルしようとすると、エラーが発生します。
私の .idl ファイルは 1000 行を超える長さなので、特にここに投稿したくはありませんが、関心のある部分は次のとおりだと思います。
それから数行後...
型指定エラーを修正するために、これらを尊重する必要があると感じています。ただし、これを行うと、新しい問題が発生します。
私はidl形式とmidl.exeの使用にかなり慣れていません。おそらく、私がやっていることに何か露骨な問題がありますか?
いつものように、どんな助けも大歓迎です:)
com - 2 つの .IDL ファイルまたは 2 つの .tlb ファイルを 1 つのファイルにマージする
REGASM を使用して COM に公開する 2 つの .net dll があります。COM クライアント内での参照を簡素化するために、これらを 1 つのファイルにしたいと考えています。
両方のファイルを IDL に変換してから、一方のライブラリ セクションの内容を他方にコピーしてから、MIDL を使用して .tlb にコンパイルし直しました。これは 2 番目の IDL 内の TypeDefs では正常に機能しますが、コピーしたインターフェイスに関しては失敗するようです。コピペしました。
これに多くの時間を費やす前に、この方法で IDL を貧弱にすることが実際に可能であることを確認したかったのです。
c++ - DLL を登録せずに C4772 エラーを解決する方法はありますか?
多数の相互参照 COM ライブラリを持つ VS2010 プロジェクトを維持しています。VS2010 がインストールされているランダムなワークステーションからビルドできるようにプロジェクトを構成しようとしています。ワークステーションは 32 ビットと 64 ビットの両方である可能性があるため、プロジェクトを「出力を登録する」ように構成すると、64 ビット DLL を読み込んで DllRegisterServer を呼び出すことができないため、ビルドは 32 ビット マシンでビルドに失敗します。
次に例を示します。プロジェクト B の Typelib は、プロジェクト A の Typelib を参照します。プロジェクト C は、次のステートメントを介してプロジェクト B を参照します。
ライブラリ B は A を参照するため、B.tlb がインポートされると、コンパイラは A から型を読み込もうとします。したがって、A が登録されていない場合、コンパイルは次のように失敗します。
OleView アプリケーションを使用して B.tlb を開こうとしましたが、regsvr32 を使用して登録されている場合、ライブラリ A 参照の正しいファイル名のみが表示されます。
だから、ここでの私の質問は次のとおりです。ライブラリ参照が適切に解決される別の方法はありますか? たとえば、ライブラリの TLB の名前を .tlb などに変更します。
visual-studio-2008 - Visual Studio 6のtypelibは、Vistaおよび7のVisual Studio 2008で異なる方法で処理されますか?
Visual Studio 6C++で標準のDLLを作成しました。また、Declareを介さずに、VB6で直接使用できるように、それに対応するtypelibを作成しました。
WindowsXPのVB6では正常に動作します。
DLLとTLBをVistaとWindows7に取り込むと、機能しなくなります。そこで.TLBは正常に登録されますが、VisualStudio2008REGTLIB
で表示される唯一の記号はAttribution
定数です。
私がエミュレートしようとしている手法は、タイプライブラリを使用してCDLLをVBにアクセスしやすくする方法にあります。この手法が適用されなくなったのは事実ですか?
(省略された)ODLコードは以下に再現されています。何が起こっているのか分かりますか?