0

というdllがありhecom32.dllます。これをアプリケーションで使用したいと考えています。私は次のことを認めます。

#import "hecom32.dll"

そして、次のエラーが表示されます。

enter Error 1   error C1083: Cannot open type library file: 'c:\users\dvargo\documents\visual studio 2010\projects\johnny\johnny\hecom32.dll': Error loading type library/DLL.  c:\users\dvargo\documents\visual studio 2010\projects\johnny\johnny\johnny.cpp  6   1   Johnny

明らかに追加できません。ただし、何が問題なのかを判断することはできません。ファイルを分析して、インポートできない理由を確認する方法はありますか。dll で関数を使用する別の方法はありますか?

Visual Studio 2010 を使用しています

4

1 に答える 1

5

これは、hecom32.dll が COM サーバーを実装し、タイプ ライブラリがリソースとして埋め込まれている場合にのみ、正しく機能します。File + Open + Fileでdllを選択して確認できます。ノードを開くと、リソース ID が 1 の「TYPELIB」というラベルの付いたリソースが表示されます。

確かにそれが欠けている、エラーメッセージは同じように言っています。タイプ ライブラリの埋め込みは規則であり、必須ではありません。.tlb ファイルとして個別に保持することも可能です。そしてもちろん、それはまったく COM サーバーではないかもしれません。dll で Dumpbin.exe /exports を実行すると、これを確認できます。COM サーバーには、少なくとも "DllGetClassObject" という名前のエクスポートがあります。

これでうまくいかない場合は、DLL の所有者に連絡して、DLL を適切に使用する方法について助けを求めてください。これには通常、エクスポートされた関数の宣言を含む .h ファイルと、リンクできるように .lib ファイルが必要です。

于 2012-04-05T16:02:15.530 に答える