問題タブ [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.

0 投票する
0 に答える
88 参照

c# - タイプ ライブラリ C# の空のメソッド

次のようなクラスを持つ.exeアセンブリがあります

のように登録します。

2 つの質問があります。

1) オブジェクトエクスプローラーの「COM」タブで開いています。アセンブリが表示され、そこにオブジェクトが表示されますが、このクラスにはメソッドが表示されません。どうしたの?

2) 2 番目のプロジェクトから参照しようとしています。参照の追加 -> COM (VS2010)。エラーが発生します:

「'assemblyname' への参照を追加できませんでした。

ActiveX タイプ ライブラリ 'path\1.tlb' は .NET アセンブリからエクスポートされたため、参照として追加できません。

代わりに .NET への参照を追加してください」

はい、この質問を読みました。しかし、アセンブリを直接参照するのではなく、COM 経由でアクセスしたいのです。アセンブリを COM 経由で参照できるようにするにはどうすればよいですか?

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

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 相互運用機能はまだ機能していなかったと思います。

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

vb.net - 他のコンピューターに tlb を登録できません

vb.net Visual Studio 2012 から dll を作成し、オプションを使用して COM 相互運用に登録すると、.tlb ファイルが生成され、同じように vb6 のプロジェクトから参照してその機能を使用することができました。私のPCで起こっています。

しかし、別のPCからは機能しません。次のエラーが表示されます。

実行時 429: ActiveX コンポーネントはオブジェクトを作成できません

いくつかの方法を試しましたが、何もうまくいきません。

0 投票する
0 に答える
153 参照

c# - tlb ファイルのインポート時 関数名が変更されました

私は C# コードで組み込まれた Dll を持っていますが、必要に応じて C++ コードで使用したいと考えています。

長い検索の後、私は解決策を見つけ、を使用abcd.tlbしてabcd.dllファイルから作成しましたRegASM.exe

C++ プロジェクトにtlbファイルをインポートしたところ、すべて正常に動作しました。

しかし、同じC#コードからtlbファイルを再度生成し、新しいtlbファイルを古いC++コードにインポートした後、古い C++ コードは関数名の不一致によりコンパイルを停止しました。驚いたことに、関数の 1 つの名前が.tlhファイルでからに変更されました。GetUrlGeturl

別のマシンで同じコードを使用してtlbファイルを生成したところ、問題なく動作しました。

.tlh生成時に特定のマシンで関数名が変更された理由について、誰かの手がかりはありますか?

0 投票する
0 に答える
205 参照

c# - tlbimp は、「ライブラリ」セクションに含まれていないインターフェイスのラッパーを生成しません

COM ライブラリの COM ラッパー クラスを作成しようとしています。最初に MIDL を使用して .IDL を .TLB にコンパイルし、次に TlbImp を使用してマネージ ラッパー アセンブリを生成しました。ただし、一部のインターフェイスがマネージ ラッパーに含まれていないことがわかりました。その理由は、それらが「ライブラリ」セクションに記載されていないためです。

.IDL を変更して「ライブラリ」内にすべてのインターフェイスを手動で書き込む代わりに、最終的なマネージ ラッパー アセンブリにすべてのインターフェイスを含める方法はありますか?

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

c++ - 実行時にタイプ ライブラリ (.tlb) を読み込んで使用する

の関数を.tlb介して公開するファイルがあります。これを実行時にロードし、ネイティブ プロジェクト内で関数を使用したいと考えています。COMC# DLL.tlb

LoadTypeLib関数を使用してライブラリをロードすることはできますが、ITypeLib返された関数が.NET DLL. 通常DLLの では、ハンドルを使用GetProcAddressDLLて関数アドレスを取得できましたが、タイプ ライブラリでは機能しないと思いますか?

では、これにはどのようにアプローチすべきでしょうか。

0 投票する
0 に答える
1510 参照

c# - TlbImp の解決方法: エラー TI0000

サードパーティの DLL への参照を追加しようとしています。しかし、 Hereと同じ問題を抱えていました。

そのため、TlbImp.exe を使用して DLL を検証しようとしていますが、このアプローチでは新しいエラーが発生します。

TlbImp: エラー TI0000: 入力ファイル 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\gsdll32.dll' は有効なタイプ ライブラリではありません

リンクをたどってみましたが、これに関する解決策はありません。

リンク 1 リンク 2 (質問は正解のコメントで出題されます)

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

c# - C#/COM ソリューションのオフサイト ビルドは可能ですか?

私は統合サーバーで作業しており、COM ライブラリを参照する C#.NET 4.5 ソリューションを構築したいと考えています。COM オブジェクトが CI マシンにインストールされていません。

手元に .tlb ファイルがあります。tlbimp.exe を使用して .dll を既に作成し、参照を .csproj ファイルに含めました。

ただし、ビルドは次の警告を発生させます

確かに、それは登録されていません。生成された .dll ファイルから必要な型情報を取得するには、コンパイラとリンカーが必要です。

COM .dll を登録せずにビルドを続行する方法はありますか?

ありがとう!ラインハルト。