問題タブ [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 投票する
1 に答える
1287 参照

c# - COM 例外: 「SerializationException: 入力ストリームは有効なバイナリ形式ではありません。開始内容は...」

C# コードで参照している COM アセンブリ (com1.dll と呼びましょう) があります。参照を追加すると、参照ノードの下に Interop.com1.dll が表示されます。Visual Studio からアプリケーションを実行すると、次のコードが正常に実行されます。

次に、ビルド スクリプトを実行し、次の nAnt を実行します。

ビルド スクリプトから生成されたアセンブリを実行するvar customer = new com1.Customer();と、次のスタック トレースを含むコード行でエラーが発生します。

私の質問は、誰かが理由を知っていますか?

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

.net - 簡単なセットアップでの「タイプ ライブラリ インポーターはメンバーの署名を変換できませんでした」という警告

この最も単純な IDL ファイルを観察します。

コンパイル方法は次のとおりです。

TlbImp 警告に注意してください。作成された相互運用アセンブリは次のとおりです。

属性が存在ComConversionLossすると気分が悪くなります。私の質問は、この警告を取り除くにはどうすればよいですか?

PS 私の質問は、「タイプライブラリインポーターがメンバーの署名を変換できませんでした」という警告の原因は何ですか? . ただし、コマンドラインでコンパイルしても警告がどこにも消えないため、そうではありません。

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

.net - 組み込みの Interop-Types を使用する場合の警告

私は最近、C# ソリューションの 1 つを VS2008 から vs 2010 に更新して、組み込みの相互運用型機能を利用しました。これにより、従来の VB6 コードベースとの相互作用のために現在必要な相互運用のライブラリの出荷を停止できます。

何らかの理由で、ソリューションをコンパイルすると次のメッセージが表示されます。

タイプ ライブラリ インポーターは、IUnknown から派生していないインターフェイスを検出しました: '_HiddenInterface'

私は周りを検索しましたが、これまでのところ、「無視しても害はありません」と「VB6コードがいくつかのルールに違反していることを意味します」という2ビットの情報しか見つかりませんでした。VB コードベースは私たちのものであり、コンパイル時に警告が 0 であることをお勧めします。これらの警告の原因を修正したいと思います。

私は途方に暮れているので、アドバイスは素晴らしいです。

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

.net - tlbimp.exeは、カスタマイズされたバージョン情報を使用して相互運用機能アセンブリを生成できますか?

Microsoft Type Library Importerツール(tlbimp.exe)は、バージョン情報なしで相互運用機能アセンブリを生成します。つまり、会社、著作権、商標、番号のバージョンは常に1.0.0.0に設定されていません。カスタマイズされたバージョン情報を使用して相互運用機能アセンブリを生成するツールを入手することは可能ですか?

これは、私がSOで尋ねた別の質問と大まかに関連しています。ビルドされた.Netアセンブリのバージョン情報を変更します。

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

.net - tlbimp:初期バインディングは「/ noclassmembers」とどのように連携しますか?

私はtlbimp/noclassmembersで遊んでいて、オプションを見つけました。

ああ!私はそれが早期の拘束力を壊すに違いない!

しかし、残念なことに、このオプションで生成された相互運用機能アセンブリを使用した場合でも、すべてが正常に機能しているように見えました。つまり、この新しい相互運用機能アセンブリに置き換えるときに、コンパイルの問題(またはテストマシンでの明らかな実行時の問題)はありませんでした。

では、正確に何をするのでしょうか。また、このオプションを常に使用することが望ましくないのはなぜですか。/noclassmembers

次のことを考慮してください。

  1. どうやら、「TypeLoadError例外を回避する」必要がある場合があります。
  2. 結果として得られる相互運用機能アセンブリは小さくなります(私の場合はサイズの3/4にすぎません)

(ファイルサイズから判断すると、Visual Studioの自動生成された相互運用機能アセンブリはこのオプションを使用しません。)

ありがとう。

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

.net - Windows インストーラーは、外部アプリケーションのバージョンに基づいてアセンブリを配置できますか?

COM相互運用機能を介して外部アプリケーション(ExAppと呼びます)と統合するVisual Studio 2010 / .NET 4で小さなプログラム(dll)を開発しています。TlbImp.exe外部アプリケーションから提供されるものがないため、 を使用して自分で相互運用アセンブリを生成しています。ExApp には 3 つの一般的なバージョンがあり、それぞれが事実上同一の API を備えていますが、それぞれ異なる (そして互換性のない) 相互運用 dll が生成されています。現時点では、3 つの個別のインストーラーがあることを意味します。

  • v1my.dllに対してビルド/リンクされたインストーラーInterop.ExApp.dll
  • v2my.dllに対してビルド/リンクされたインストーラーInterop.ExApp.dll
  • v3my.dllに対してビルド/リンクされたインストーラーInterop.ExApp.dll

これよりも良い解決策があるはずです。

必要な install.exe が 1 つだけになるように Visual Studio / Windows インストーラーを構成するにはどうすればよいですか? インストーラーが ExApp のバージョンを検出し、対応するバージョンの と をインストールすることを意味しmy.dllますInterop.ExApp.dll

おまけの質問: ExApp API は意味のある変更がないため、あるバージョンの をコンパイルmy.dllして、インストールされているどのバージョンの ExApp でも動作するようにするにはどうすればよいですか?

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

.net - Tlbimp.netおよびCOMコンポーネントはまだ登録する必要があります

COM DLLを使用し、tlbimpを使用して.net3.5プロジェクトで使用できるDLLを作成しました。COMインターフェイスを使用しようとするとエラーが発生しますが、アプリがインストールされるサーバーにCOM dllを登録する必要があるかどうか疑問に思っていますか?もしそうなら、どのDLLを登録しますか?tlpimpで作成したDLLとtlpimpで使用した元のDLLのどちらですか?

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

c# - 1つのCOMクラスインスタンスをパラメーターとしてC#の別のCOMメソッドに渡す方法は?

を使用して2つのCOMDLLのラッパーを作成しましたTlbImp.exe。1つには、ラッパーが次のように説明するクラスがあります。

このオブジェクトはパラメータとして渡す必要があります

次に、次のようにメソッドを呼び出します。

渡されているオブジェクトは正しいものではないと思います。TlbImp.exeそれらのDLLをリンクして、GNOTDRSignatureServerの代わりに使用UnmanagedType.IUnknownできる、または使用できるように感じますSystem.Runtime.InteropServices.Marshal.GetComInterfaceForObject

私のコードの何が問題になっていますか?

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

.net - TlbImpがDIA用のこのCOMインターフェイスを.NETに正しくインポートしないのはなぜですか?

.NETで使用するためにMicrosoftのDIASDKをインポートしようとしました。

これはほとんどの部分で正しく機能しているようですが、何らかの理由で、一部のインターフェイス(たとえばIDiaEnumFrameData)が含まれていませんが、残りのインターフェイスは問題なく含まれています。

(インターフェイスは、Cファイルとヘッダーファイルに存在していても、.DLLファイルにも.TLBファイルにも存在しません。)

これを引き起こしているのは何ですか?

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

java - com4j ラッパー生成の問題

tlbimp-20110320.jar を使用して com4j のラッパーを生成しようとしています。同じエラーで2008年版も試しました。tut の例に対して実行しようとしても、同じエラーが発生します。

Iceman が必要なライブラリへのリンクを提供した後、少し実行することができました。ただし、arg4j の内容を tlbimp jar にコピーし、com4j の内容も tlbimp jar にコピーする必要がありました。今私は得る