問題タブ [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# - COM 例外: 「SerializationException: 入力ストリームは有効なバイナリ形式ではありません。開始内容は...」
C# コードで参照している COM アセンブリ (com1.dll と呼びましょう) があります。参照を追加すると、参照ノードの下に Interop.com1.dll が表示されます。Visual Studio からアプリケーションを実行すると、次のコードが正常に実行されます。
次に、ビルド スクリプトを実行し、次の nAnt を実行します。
と
ビルド スクリプトから生成されたアセンブリを実行するvar customer = new com1.Customer();
と、次のスタック トレースを含むコード行でエラーが発生します。
私の質問は、誰かが理由を知っていますか?
.net - 簡単なセットアップでの「タイプ ライブラリ インポーターはメンバーの署名を変換できませんでした」という警告
この最も単純な IDL ファイルを観察します。
コンパイル方法は次のとおりです。
TlbImp 警告に注意してください。作成された相互運用アセンブリは次のとおりです。
属性が存在ComConversionLoss
すると気分が悪くなります。私の質問は、この警告を取り除くにはどうすればよいですか?
PS 私の質問は、「タイプライブラリインポーターがメンバーの署名を変換できませんでした」という警告の原因は何ですか? . ただし、コマンドラインでコンパイルしても警告がどこにも消えないため、そうではありません。
.net - 組み込みの Interop-Types を使用する場合の警告
私は最近、C# ソリューションの 1 つを VS2008 から vs 2010 に更新して、組み込みの相互運用型機能を利用しました。これにより、従来の VB6 コードベースとの相互作用のために現在必要な相互運用のライブラリの出荷を停止できます。
何らかの理由で、ソリューションをコンパイルすると次のメッセージが表示されます。
タイプ ライブラリ インポーターは、IUnknown から派生していないインターフェイスを検出しました: '_HiddenInterface'
私は周りを検索しましたが、これまでのところ、「無視しても害はありません」と「VB6コードがいくつかのルールに違反していることを意味します」という2ビットの情報しか見つかりませんでした。VB コードベースは私たちのものであり、コンパイル時に警告が 0 であることをお勧めします。これらの警告の原因を修正したいと思います。
私は途方に暮れているので、アドバイスは素晴らしいです。
.net - tlbimp.exeは、カスタマイズされたバージョン情報を使用して相互運用機能アセンブリを生成できますか?
Microsoft Type Library Importerツール(tlbimp.exe)は、バージョン情報なしで相互運用機能アセンブリを生成します。つまり、会社、著作権、商標、番号のバージョンは常に1.0.0.0に設定されていません。カスタマイズされたバージョン情報を使用して相互運用機能アセンブリを生成するツールを入手することは可能ですか?
これは、私がSOで尋ねた別の質問と大まかに関連しています。ビルドされた.Netアセンブリのバージョン情報を変更します。
.net - tlbimp:初期バインディングは「/ noclassmembers」とどのように連携しますか?
私はtlbimp/noclassmembers
で遊んでいて、オプションを見つけました。
ああ!私はそれが早期の拘束力を壊すに違いない!
しかし、残念なことに、このオプションで生成された相互運用機能アセンブリを使用した場合でも、すべてが正常に機能しているように見えました。つまり、この新しい相互運用機能アセンブリに置き換えるときに、コンパイルの問題(またはテストマシンでの明らかな実行時の問題)はありませんでした。
では、正確には何をするのでしょうか。また、このオプションを常に使用することが望ましくないのはなぜですか。/noclassmembers
次のことを考慮してください。
- どうやら、「TypeLoadError例外を回避する」必要がある場合があります。
- 結果として得られる相互運用機能アセンブリは小さくなります(私の場合はサイズの3/4にすぎません)
(ファイルサイズから判断すると、Visual Studioの自動生成された相互運用機能アセンブリはこのオプションを使用しません。)
ありがとう。
.net - Windows インストーラーは、外部アプリケーションのバージョンに基づいてアセンブリを配置できますか?
COM相互運用機能を介して外部アプリケーション(ExAppと呼びます)と統合するVisual Studio 2010 / .NET 4で小さなプログラム(dll)を開発しています。TlbImp.exe
外部アプリケーションから提供されるものがないため、 を使用して自分で相互運用アセンブリを生成しています。ExApp には 3 つの一般的なバージョンがあり、それぞれが事実上同一の API を備えていますが、それぞれ異なる (そして互換性のない) 相互運用 dll が生成されています。現時点では、3 つの個別のインストーラーがあることを意味します。
- v1
my.dll
に対してビルド/リンクされたインストーラーInterop.ExApp.dll
- v2
my.dll
に対してビルド/リンクされたインストーラーInterop.ExApp.dll
- v3
my.dll
に対してビルド/リンクされたインストーラーInterop.ExApp.dll
これよりも良い解決策があるはずです。
必要な install.exe が 1 つだけになるように Visual Studio / Windows インストーラーを構成するにはどうすればよいですか? インストーラーが ExApp のバージョンを検出し、対応するバージョンの と をインストールすることを意味しmy.dll
ますInterop.ExApp.dll
。
おまけの質問: ExApp API は意味のある変更がないため、あるバージョンの をコンパイルmy.dll
して、インストールされているどのバージョンの ExApp でも動作するようにするにはどうすればよいですか?
.net - Tlbimp.netおよびCOMコンポーネントはまだ登録する必要があります
COM DLLを使用し、tlbimpを使用して.net3.5プロジェクトで使用できるDLLを作成しました。COMインターフェイスを使用しようとするとエラーが発生しますが、アプリがインストールされるサーバーにCOM dllを登録する必要があるかどうか疑問に思っていますか?もしそうなら、どのDLLを登録しますか?tlpimpで作成したDLLとtlpimpで使用した元のDLLのどちらですか?
c# - 1つのCOMクラスインスタンスをパラメーターとしてC#の別のCOMメソッドに渡す方法は?
を使用して2つのCOMDLLのラッパーを作成しましたTlbImp.exe
。1つには、ラッパーが次のように説明するクラスがあります。
このオブジェクトはパラメータとして渡す必要があります
次に、次のようにメソッドを呼び出します。
渡されているオブジェクトは正しいものではないと思います。TlbImp.exe
それらのDLLをリンクして、GNOTDRSignatureServer
の代わりに使用UnmanagedType.IUnknown
できる、または使用できるように感じますSystem.Runtime.InteropServices.Marshal.GetComInterfaceForObject
私のコードの何が問題になっていますか?
.net - TlbImpがDIA用のこのCOMインターフェイスを.NETに正しくインポートしないのはなぜですか?
.NETで使用するためにMicrosoftのDIASDKをインポートしようとしました。
これはほとんどの部分で正しく機能しているようですが、何らかの理由で、一部のインターフェイス(たとえばIDiaEnumFrameData
)が含まれていませんが、残りのインターフェイスは問題なく含まれています。
(インターフェイスは、Cファイルとヘッダーファイルに存在していても、.DLLファイルにも.TLBファイルにも存在しません。)
これを引き起こしているのは何ですか?
java - com4j ラッパー生成の問題
tlbimp-20110320.jar を使用して com4j のラッパーを生成しようとしています。同じエラーで2008年版も試しました。tut の例に対して実行しようとしても、同じエラーが発生します。
Iceman が必要なライブラリへのリンクを提供した後、少し実行することができました。ただし、arg4j の内容を tlbimp jar にコピーし、com4j の内容も tlbimp jar にコピーする必要がありました。今私は得る