• ベストアンサー

VBから参照できないCのDLLを使用する方法

Cで作成されたDLLがあるのですが、VBから参照設定しても「指定されたファイルへの参照は登録できません。」と怒られます。 そのようなDLLをどうしてもVBから使用したい場合はどうすれば良いでしょうか? 直接は無理だとしても、間に何かをかましてできると思うのですが、良い方法があれば教えてください。 ちなみに VB6 です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.5

>あります。 >とりあえず、DLLファイルと同様に C:\WINNT\System32 フォルダへ格納しました。 となるとやはりVBから直に呼び出すことはできません。 DLLでもスタティックリンクで使うものがあり VC++からは呼び出すことができます。 そこでVBから呼び出すには間にクッションをおく必要があります。 VB←VC++で作ったDLLを呼び出すDLL(クッション)←元のDLL .hや.libはVC++でスタティックリンクする際に必要となる ファイルでVBからは使用できません。

その他の回答 (4)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

***.dllの他に***.hとか***.libとかついてなかったですか?

rally
質問者

お礼

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 「しました」というか、既に「しています」です。

rally
質問者

補足

あります。 とりあえず、DLLファイルと同様に C:\WINNT\System32 フォルダへ格納しました。

  • run_away
  • ベストアンサー率42% (8/19)
回答No.3

ちょっと古い情報ですが、URL載せておきます。 「VBから呼出可能なようにDLLを作る」ということがなされているかどうかを確認してください。 Declareを使っても呼び出せないものもあります。 間に何かかませるとしたら、ActiveXのラッパーなどをかませればVBから呼び出せるようになりますが、これはC/C++でつくる必要がありますからねぇ。手間はあまり変わらないでしょう。 また、DLLが他のDLLを参照している場合、実行時エラー53がでることもあるのでそちらの線も洗ってみてください。

参考URL:
http://homepage2.nifty.com/DSS/VCPP/DLL/dllvbcall2.htm
noname#4564
noname#4564
回答No.2

  > 実行時エラー'53': > ファイルが見つかりません:hoge.dll パスが通ってないだけでしょう。 hoge.dllを下記のどこかに移動してみては? (1) %SystemRoot% (2) %SystemRoot%\System32 (3) %SystemRoot%\System (4) %Path% のどこか (5) App.Path  

rally
質問者

補足

何度もありがとうございます。最後までお付き合いください。m(_ _)m > パスが通ってないだけでしょう。 > hoge.dllを下記のどこかに移動してみては? こちらで試したことを書くべきでした。 そう思いまして、C:\WINNT\System32 においてみましたが、同じなのです。 フルパス指定でも同じでした。 DLLはDeclareすれば、必ず使えるものなのでしょうか?

noname#4564
noname#4564
回答No.1

  (1) そのDLLがCOM(ActiveX)コンポーネントなら、   RegSvr32 "DriveName:\....Path....\FileName"   を実行してみる。 (2) COMでないなら、Declare 宣言する。

rally
質問者

補足

> (1) そのDLLがCOM(ActiveX)コンポーネントなら、   RegSvr32 "DriveName:\....Path....\FileName"   を実行してみる。 COMコンポーネントではありません。 試しにやってみましたが、以下のエラーになりました。 LoadLibrary("C:\WINNT\System32\hoge.dll")failed - 指定されたモジュールが見つかりません。 > (2) COMでないなら、Declare 宣言する。 これもやってみたのですが、エラーになるのです。 実行時エラー'53': ファイルが見つかりません:hoge.dll DLLはDeclareすれば、必ず使えるものなのでしょうか?

関連するQ&A