- ベストアンサー
VBから参照できないCのDLLを使用する方法
Cで作成されたDLLがあるのですが、VBから参照設定しても「指定されたファイルへの参照は登録できません。」と怒られます。 そのようなDLLをどうしてもVBから使用したい場合はどうすれば良いでしょうか? 直接は無理だとしても、間に何かをかましてできると思うのですが、良い方法があれば教えてください。 ちなみに VB6 です。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>あります。 >とりあえず、DLLファイルと同様に C:\WINNT\System32 フォルダへ格納しました。 となるとやはりVBから直に呼び出すことはできません。 DLLでもスタティックリンクで使うものがあり VC++からは呼び出すことができます。 そこでVBから呼び出すには間にクッションをおく必要があります。 VB←VC++で作ったDLLを呼び出すDLL(クッション)←元のDLL .hや.libはVC++でスタティックリンクする際に必要となる ファイルでVBからは使用できません。
その他の回答 (4)
- sha-girl
- ベストアンサー率52% (430/816)
***.dllの他に***.hとか***.libとかついてなかったですか?
- run_away
- ベストアンサー率42% (8/19)
ちょっと古い情報ですが、URL載せておきます。 「VBから呼出可能なようにDLLを作る」ということがなされているかどうかを確認してください。 Declareを使っても呼び出せないものもあります。 間に何かかませるとしたら、ActiveXのラッパーなどをかませればVBから呼び出せるようになりますが、これはC/C++でつくる必要がありますからねぇ。手間はあまり変わらないでしょう。 また、DLLが他のDLLを参照している場合、実行時エラー53がでることもあるのでそちらの線も洗ってみてください。
> 実行時エラー'53': > ファイルが見つかりません:hoge.dll パスが通ってないだけでしょう。 hoge.dllを下記のどこかに移動してみては? (1) %SystemRoot% (2) %SystemRoot%\System32 (3) %SystemRoot%\System (4) %Path% のどこか (5) App.Path
補足
何度もありがとうございます。最後までお付き合いください。m(_ _)m > パスが通ってないだけでしょう。 > hoge.dllを下記のどこかに移動してみては? こちらで試したことを書くべきでした。 そう思いまして、C:\WINNT\System32 においてみましたが、同じなのです。 フルパス指定でも同じでした。 DLLはDeclareすれば、必ず使えるものなのでしょうか?
(1) そのDLLがCOM(ActiveX)コンポーネントなら、 RegSvr32 "DriveName:\....Path....\FileName" を実行してみる。 (2) COMでないなら、Declare 宣言する。
補足
> (1) そのDLLがCOM(ActiveX)コンポーネントなら、 RegSvr32 "DriveName:\....Path....\FileName" を実行してみる。 COMコンポーネントではありません。 試しにやってみましたが、以下のエラーになりました。 LoadLibrary("C:\WINNT\System32\hoge.dll")failed - 指定されたモジュールが見つかりません。 > (2) COMでないなら、Declare 宣言する。 これもやってみたのですが、エラーになるのです。 実行時エラー'53': ファイルが見つかりません:hoge.dll DLLはDeclareすれば、必ず使えるものなのでしょうか?
お礼
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 「しました」というか、既に「しています」です。
補足
あります。 とりあえず、DLLファイルと同様に C:\WINNT\System32 フォルダへ格納しました。