0

tlibimp.exe (バージョン 11.0) を使用してサードパーティの .NET タイプ ライブラリ (COM サーバー DLL) をインポートしようとしています。これは基本的に問題なく動作しますが、Windows XP を実行しているコンピューターと Windows 7 を実行している別のコンピューターで実行すると、結果が異なります。さらに悪いことに、Win7 マシンで生成されたコードはコンパイルされません。

両方のマシンには次のものがあります。

  • ボーランド C++ (RAD スタジオ) 2007
  • tlibimp.exe バージョン 11.0
  • 同じバージョンの .NET フレームワークがインストールされている (私の知る限り、Borland 2007 は .NET v2 を使用しています)
  • bcc32.exe バージョン 5.93

コンパイラは OCX.h で次のように失敗します。

   Parameter mismatch in write access specifier of property Font

XP マシンでの関連するコード行 (正常にコンパイルされる) は次のとおりです。

  __property Graphics::TFont * Font={ read=GetTFontProp, write=_SetTFontProp, stored=false, index=-512 };

Win7 マシン (失敗) の同じ行は次のとおりです。

  __property IFontDisp* Font={ read=get_Font, write=set_Font, stored=false };

この違いがどこから来るのか、今ではよくわかりません。何か案は?

乾杯ヘンドリック

4

1 に答える 1

0

これは役立つ場合とそうでない場合がありますが、2 つのタイプ ライブラリを C シャープ アセンブリから Delphi にインポートしようとして同様の問題が発生しました。

1 つのタイプ ライブラリ (A) は TOLeServer から継承され、もう 1 つのタイプ ライブラリ (B) は TOleControl から継承されましたが、タイプ ライブラリを生成した両方のアセンブリが実質的に同一であるため、理由がわかりませんでした。

問題は、B が regasm に登録されていて、A が登録されていないことであることが判明しました。A を登録してタイプ ライブラリを再生成すると、問題が解決しました。

于 2012-12-10T11:08:18.163 に答える