問題タブ [idl]

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 投票する
1 に答える
2818 参照

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認識しません。importimportidlimportlib

何をすべきか?

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

visual-studio - oaidl.idlおよびocidl.idlの再コンパイルを防止

多数の IDL ファイルを含む COM/ATL プロジェクトがあります。これらのIDLファイルのほとんどは、importoaidl.idlおよびocidl.idlです。

プロジェクトをコンパイルするたびに、Visual Studio は MIDL を呼び出して oaidl.idl と oidl.idl... を再コンパイルます。これら 2 つの IDL ファイルは最終的に何度も再コンパイルされるため、プロジェクトのコンパイルに時間がかかります。

Visual Studio で oaidl.idl と ocidl.idl を一度だけコンパイルするように強制する方法はありますか?

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

c# - IDLをC#にどのように変換しますか?

たとえば、DOM仕様にはさまざまなIDL定義があり、その1つがインターフェイスノードです。これを(この一部でも)実際のC#に変換するにはどうすればよいでしょうか。つまり、どこから始めますか?私が理解している限り、C#のインターフェイスは、IDLがここでインターフェイスと呼んでいるものとは大きく異なる動作をします。私が間違っている?

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

visual-studio-2008 - ウィザードを使用して作成されたATLプロジェクトは、未解決のシンボルが原因でコンパイルされません

Visual Studio 2008でコンパイルする基本的なATLプロジェクトの取得に取り組んでいますが、エラーが発生し続けます。最終的に、次のビルドエラーでスタックしました。

私は何を見落としているか、間違っているのですか?再現する手順は次のとおりです。

  1. 新しいATL Project名前を作成しますSomeProject。すべてのデフォルトを受け入れます。
  2. ソリューションエクスプローラーでプロジェクトを右クリックし、を選択しますAdd > Class
  3. 短縮名として選択ATL Simple Objectして入力します。SomeObject他のすべてのデフォルトを受け入れます。

この時点で、プロジェクトは正常に構築されます。ただし、整理しやすくするためにIDLを複数のファイルに分割したいと思います(IDLは数千行の長さになります)。

  1. プロジェクトを右クリックして、を選択しますAdd > New Item
  2. ファイル名として選択Midl Fileして入力します。ISomeObject
  3. インターフェイス宣言を開いSomeProject.idlて切り取ります。ISomeObjectに置き換えますimport "ISomeObject.idl";
  4. インターフェイス宣言をに貼り付けますISomeObject.idl

MicrosoftのIDLコンパイラを満たすには、いくつかのオプションを変更する必要があります。

  1. プロジェクトを右クリックして、そのプロパティを開きます。セクションに移動してMIDL > Output、次の値を入力します。
    • ヘッダーファイル:$(InputName).h
    • IIDファイル:$(InputName)_i.cpp
    • プロキシファイル:$(InputName)_p.cpp
    • タイプライブラリの生成:No
  2. セクションに移動し、C/C++ > Precompiled Headersに設定Create/Use Precompiled HeaderNot using Precompiled Headerます。プリコンパイル済みヘッダーを使用すると、後でエラーが発生します。
  3. SomeProject.idlプロパティが表示されるようにファイルを選択します。セクションに移動し、MIDL > Outputに設定Generate Type LibraryYesます。
  4. フィルターSomeProject_i.hから取り外しSomeProject_i.cます。Generated Files
  5. 次の既存のアイテムをGenerated Filesフィルターに追加します。最初にプロジェクトのコンパイルを試みる必要があるかもしれません。
    • SomeProject.h
    • SomeProject_i.cpp
    • ISomeObject.h
    • ISomeObject_i.cpp

さて、この時点で私はプロジェクトがコンパイルされることを期待します。しかし、そうではありません。LNK1120この質問の上部にリストしたエラーが表示されるはずです。

何か案は?シンプルなものを見落としていますか?

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

atl - oaidl.idl と ocidl.idl の目的は何ですか?

既定の ATL シンプル オブジェクトには、IDL ファイルの先頭に次のものが含まれています。

これらのファイルは何のためにあり、いつインポートする必要があるかを知るにはどうすればよいですか? これら 2 つのファイルで定義されている内容を説明するドキュメントはありますか? 「oa」と「oc」が何を表しているのかわかりません。また、ファイル自体に役立つコメントもありません。

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

com - Midl を使用して .idl から .tlb を作成すると「型指定が必要」になる問題

私は、COM Interop として知られる野獣と長期にわたって遭遇してきました...

現在、OLE/COM オブジェクト ビューアによって生成された .idl ファイルから .tlb を生成しようとしています。ただし、Midl.exe を実行してコンパイルしようとすると、エラーが発生します。

私の .idl ファイルは 1000 行を超える長さなので、特にここに投稿したくはありませんが、関心のある部分は次のとおりだと思います。

それから数行後...

型指定エラーを修正するために、これらを尊重する必要があると感じています。ただし、これを行うと、新しい問題が発生します。

私はidl形式とmidl.exeの使用にかなり慣れていません。おそらく、私がやっていることに何か露骨な問題がありますか?

いつものように、どんな助けも大歓迎です:)

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

build-process - automake/Makefile.amを使用したIDLエンティティの生成

IDL(インターフェース記述言語)に慣れていない人のために、プラットフォーム(java、c、c ++など)で使用するためにデータ記述を抽象化します。私のプロジェクトには、Foo.idlから生成された依存関係Foo.c、Foo.h、FooHelper.c、およびFooHelper.hがあります。Foo.idlが変更されたときに任意のコマンドを実行し、ビルドプロセスにFoo.c、FooHelper.cを含めるにはどうすればよいですか?

私の現在の試みは、Makefile.amにルールを追加します。ルールが生成されたMakefileにコピーされることを期待しています。

私が試してみました:

次に、Foo.idlをmy_program_SOURCESに追加しましたが、ビルド時にthe_generate_commandを実行しません。

IDLからの生成に成功しました

ただし、Foo.c、FooHelper.cはコンパイルプロセスに追加されないため、ビルドされることはなく、the_generate_commandによって生成されるだけです。

すべてのコード(idlを含む)は$ PROJECT_DIR/srcにあります。

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

delphi - ファイルをridlに含める

私が取り組んでいる Delphi プロジェクトでは、COM サポートを追加するために非常に大きなタイプ ライブラリを作成する必要があります。Delphi のタイプ ライブラリ/ridl エディタの問題は、(プログラマの観点から) そのような大きなファイルを管理するのが難しくなることです。機能的な行に沿ってファイルを分割したいと思います。私が抱えている問題は、ridl ファイルを別のファイルに含める方法が見つからないことです。importlib 関数については認識していますが、同じプロジェクトで複数のタイプ ライブラリを作成する方法や、デルファイ内から tlb ファイルを作成する方法も見つかりません。これをより適切に管理する方法について誰かアイデアを教えてもらえますか?

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

com - 2 つの .IDL ファイルまたは 2 つの .tlb ファイルを 1 つのファイルにマージする

REGASM を使用して COM に公開する 2 つの .net dll があります。COM クライアント内での参照を簡素化するために、これらを 1 つのファイルにしたいと考えています。

両方のファイルを IDL に変換してから、一方のライブラリ セクションの内容を他方にコピーしてから、MIDL を使用して .tlb にコンパイルし直しました。これは 2 番目の IDL 内の TypeDefs では正常に機能しますが、コピーしたインターフェイスに関しては失敗するようです。コピペしました。

これに多くの時間を費やす前に、この方法で IDL を貧弱にすることが実際に可能であることを確認したかったのです。

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

interface - CORBA: CORBA IDL 型を別の型の属性にすることはできますか?

CORBA を使い始める前に知りたいことがあります。

IDL 型を別の型の属性として使用でき、その属性のメソッドを ("." を使用して) クライアント アプリケーションにも公開できることは直感的に思えます。

しかし、これは可能ですか?

例 (私の悪い IDL を許してください):

次に、クライアント アプリで次のことができます。myCar.brakePedal.press();

この種のマルチレベル オブジェクト インターフェイスを実行できない場合、CORBA はつまらないものに見えます。結局のところ、現実世界のオブジェクトはマルチレベルですよね? それで、誰かが私の心を落ち着かせて、これが確実に機能するかどうかを確認できますか (または、既に CORBA をセットアップしている場合は試してみてください)。IDL ドキュメントのどれも、これを例として明示的に示していないため、私は心配しています。ありがとう!