問題タブ [tlbimp]
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.
c# - タイプ ライブラリ C# の空のメソッド
次のようなクラスを持つ.exeアセンブリがあります
のように登録します。
2 つの質問があります。
1) オブジェクトエクスプローラーの「COM」タブで開いています。アセンブリが表示され、そこにオブジェクトが表示されますが、このクラスにはメソッドが表示されません。どうしたの?
2) 2 番目のプロジェクトから参照しようとしています。参照の追加 -> COM (VS2010)。エラーが発生します:
「'assemblyname' への参照を追加できませんでした。
ActiveX タイプ ライブラリ 'path\1.tlb' は .NET アセンブリからエクスポートされたため、参照として追加できません。
代わりに .NET への参照を追加してください」
はい、この質問を読みました。しかし、アセンブリを直接参照するのではなく、COM 経由でアクセスしたいのです。アセンブリを COM 経由で参照できるようにするにはどうすればよいですか?
com-interop - bits.idl をコンパイルおよびインポートするときに、追加の GUID 型定義を取得するのはなぜですか?
COM BITS APIに対して .NET コードを書いています。Windows キットの下にある bits.idl ファイルを見つけて実行すると、bits.tlb がmidl bits.idl
得られました。次に、実行tlbimp bits.tlb
して BackgroundCopyManager.dll を取得しました。
このアセンブリ (私の .net プロジェクトで参照) ではすべてが期待どおりであり、VS 2013 のオブジェクト ブラウザーに表示され、ildasm で適切に表示されますが、1 つの例外があります。BackgroundCopyManager 名前空間に新しい GUID タイプが追加されましたが、これは本当に必要ないと思います。
System.Guid は、.NET 側の GUID、CLSID、および IID 関連のすべてのニーズに十分対応できると考えていました。どうにかして余分なものを取り除くことはできますか?System.Guid とこの偽者の間のキャストは簡単ではなく、必要ないように思われます。
私が把握できる唯一のことは、これらのインターフェイスにはパラメーターの型として GUID を使用するメソッドがいくつかあるということです。この idl ファイルは 2000 年のものなので、.NET 相互運用機能はまだ機能していなかったと思います。
vb.net - 他のコンピューターに tlb を登録できません
vb.net Visual Studio 2012 から dll を作成し、オプションを使用して COM 相互運用に登録すると、.tlb ファイルが生成され、同じように vb6 のプロジェクトから参照してその機能を使用することができました。私のPCで起こっています。
しかし、別のPCからは機能しません。次のエラーが表示されます。
実行時 429: ActiveX コンポーネントはオブジェクトを作成できません
いくつかの方法を試しましたが、何もうまくいきません。
c# - tlb ファイルのインポート時 関数名が変更されました
私は C# コードで組み込まれた Dll を持っていますが、必要に応じて C++ コードで使用したいと考えています。
長い検索の後、私は解決策を見つけ、を使用abcd.tlb
してabcd.dll
ファイルから作成しましたRegASM.exe
。
C++ プロジェクトにtlbファイルをインポートしたところ、すべて正常に動作しました。
しかし、同じC#コードからtlbファイルを再度生成し、新しいtlbファイルを古いC++コードにインポートした後、古い C++ コードは関数名の不一致によりコンパイルを停止しました。驚いたことに、関数の 1 つの名前が.tlhファイルでからに変更されました。GetUrl
Geturl
別のマシンで同じコードを使用してtlbファイルを生成したところ、問題なく動作しました。
.tlh生成時に特定のマシンで関数名が変更された理由について、誰かの手がかりはありますか?
c# - tlbimp は、「ライブラリ」セクションに含まれていないインターフェイスのラッパーを生成しません
COM ライブラリの COM ラッパー クラスを作成しようとしています。最初に MIDL を使用して .IDL を .TLB にコンパイルし、次に TlbImp を使用してマネージ ラッパー アセンブリを生成しました。ただし、一部のインターフェイスがマネージ ラッパーに含まれていないことがわかりました。その理由は、それらが「ライブラリ」セクションに記載されていないためです。
.IDL を変更して「ライブラリ」内にすべてのインターフェイスを手動で書き込む代わりに、最終的なマネージ ラッパー アセンブリにすべてのインターフェイスを含める方法はありますか?
c++ - 実行時にタイプ ライブラリ (.tlb) を読み込んで使用する
の関数を.tlb
介して公開するファイルがあります。これを実行時にロードし、ネイティブ プロジェクト内で関数を使用したいと考えています。COM
C#
DLL
.tlb
LoadTypeLib
関数を使用してライブラリをロードすることはできますが、ITypeLib
返された関数が.NET DLL
. 通常DLL
の では、ハンドルを使用GetProcAddress
しDLL
て関数アドレスを取得できましたが、タイプ ライブラリでは機能しないと思いますか?
では、これにはどのようにアプローチすべきでしょうか。
c# - C#/COM ソリューションのオフサイト ビルドは可能ですか?
私は統合サーバーで作業しており、COM ライブラリを参照する C#.NET 4.5 ソリューションを構築したいと考えています。COM オブジェクトが CI マシンにインストールされていません。
手元に .tlb ファイルがあります。tlbimp.exe を使用して .dll を既に作成し、参照を .csproj ファイルに含めました。
ただし、ビルドは次の警告を発生させます
確かに、それは登録されていません。生成された .dll ファイルから必要な型情報を取得するには、コンパイラとリンカーが必要です。
COM .dll を登録せずにビルドを続行する方法はありますか?
ありがとう!ラインハルト。