問題タブ [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.
corba - CORBA IDL イン、アウト、インアウト
in、out、inout - CORBA IDL 関数パラメータでの「方向」演算子の意味は何ですか?
c++ - IDL でクラス コンストラクターを宣言するにはどうすればよいですか?
クラス コンストラクターは IDL でどのように定義されますか?
com - TypeLibraryからプログラムでIDLコードを取得する
次の手順を実行するコードを書いています。
.net .dllを登録し、regasm.exeを使用して.tlbを生成します
- .net .dllを登録し、regasm.exeを使用して.tlbを生成します
- typeLibraryからIDLコードを生成し、ファイルに保存します。
- IDLコードを編集して、小さな変更を加えます。
- Midl.exeを使用して、IDLを.tlbに再コンパイルします。
ご想像のとおり、私が固執しているステップはIDLの生成です。これは、Windows APIに付属のOleViewerを使用して手動で実行できることはわかっていますが、この手動の手順を削除したいと思います。
コマンドラインからOleViewerを操作したり、IDLコードを生成する他の方法を見つけたりすることはできません。
誰かアイデアがありますか?IDLを生成するコードはOleViewerのどこかにある必要があることを私は知っています...おそらくそれにアクセスする方法はありますか?
c# - インデクサーのようなプロパティを COM に公開する
私は既存のCOMインターフェースを持っています。新しいインターフェイスを (新しい GUID で) COM として公開する .net アセンブリを作成したくありませんが、インターフェイスの構造は同じである必要があります。
このインターフェイスを公開する .net クラス (C#) を作成するにはどうすればよいですか?
com - .tlb ファイルをヘッダーと実装ファイルに変換するにはどうすればよいですか?
mscorlib.tlb を変換しようとしています。通常、C++ では次のように使用されます。
ヘッダーと実装ファイルに変換するにはどうすればよいですか?
Visual Studio を使用して、上記の行を含むダミーの cpp ファイルをコンパイルすると、.tlh ファイルが生成されました。実装ファイルもあるはずではありませんか?
eclipse - コンパイルなしのEclipseCORBA?
私は EclipseCORBA を使用していますが、ほとんどは構文の強調表示のためだけです。IDL コンパイラをオフにする方法があるかどうか疑問に思っています。その理由は、IDL ファイルに有効なエラーが表示されないためです。
シンタックス ハイライト IDL ファイル用の EclipseCORBA に代わる Eclipse プラグイン (理想的には、フォーマッターを備えたもの :> ) も歓迎します。:)
.net - 列挙型のみを含む COM ライブラリを作成する際の問題
私はCOM相互運用プロジェクトを行っています。一部の VB および C++ ATL COM プロジェクトを C# および .NET Interop に置き換えます。.NET で列挙型を定義して ComVisible にすると、Typelib.EnumValue だけでなく、Typelib.EnumType_EnumValue として公開されます。typelib エクスポーターは、値の名前が一意であることを確認するためにこれを行います。しかし、すべての列挙型が一意であることを知っているので、アンダースコアは必要ありません。また、アンダースコアを取り除かない場合、変更が必要なクライアント コードがたくさんあります。
この問題の解決策を見つけるために、IDL ファイルで列挙型を定義し、これから typelib と .Net 相互運用機能を作成しました。
tlb ファイルを生成する MIDL.exe でタイプ ライブラリを作成します。
そして、tlbimp.exe でアセンブリを作成します。他の相互運用アセンブリと同じキーでアセンブリに署名します。
tlbimp OpenStructureAdapterEnum.tlb /keyfile:KeyFile.snk
次に、アセンブリを regasm.exe に登録します。このアセンブリは問題なく表示され、アンダースコアのない列挙型が含まれています。しかし、問題は、OLE/COM オブジェクト ビューアーや VBA または VB6 から COM ライブラリを参照できないことです。また、COM に公開された別のアセンブリから列挙型を参照すると、列挙型への参照を含むインターフェイスの一部が制限されたメソッドとして公開されます。
列挙型のみ (アンダースコアなし) を含み、他の .net Interop アセンブリからこれらを参照する COM ライブラリを作成するにはどうすればよいですか?
.net - 簡単なセットアップでの「タイプ ライブラリ インポーターはメンバーの署名を変換できませんでした」という警告
この最も単純な IDL ファイルを観察します。
コンパイル方法は次のとおりです。
TlbImp 警告に注意してください。作成された相互運用アセンブリは次のとおりです。
属性が存在ComConversionLoss
すると気分が悪くなります。私の質問は、この警告を取り除くにはどうすればよいですか?
PS 私の質問は、「タイプライブラリインポーターがメンバーの署名を変換できませんでした」という警告の原因は何ですか? . ただし、コマンドラインでコンパイルしても警告がどこにも消えないため、そうではありません。
c++ - IDLファイルのみでCOMオブジェクトを登録する
サードパーティのIDLファイルがあり、コンパイルするとヘッダーと_i.cファイルが生成されます。これら3つのファイルはすべて、VisualStudio2010プロジェクトの一部です。(これまでのところ、COMの初期化を試みた以外は、プロジェクトは空です。)
を呼び出すことでプロジェクトをコンパイルできます
実行時に、CoCreateInstance()は「クラスが登録されていません」というエラーを返します。
私がインターネットで見つけることができるすべては、DLLファイルまたはEXEファイルでzippy32を実行することによってCOMオブジェクトを登録することを言います。しかし、私はIDLファイルしか持っていません。プロジェクトによって生成されたEXEファイルを登録しようとしましたが、モジュールが「ロードされましたが、エントリポイントDLLRegisterServerが見つかりませんでした」というエラーが発生しました。
正直なところ、他に何を試すべきかわかりません。