以前FTP、HTTP転送を行うDLLをVCで作成しました。
それをVB側のアプリケーションで使用しています。
今回、機能追加により新しいメソッドを追加しました。
ところが以前からあるメソッドは参照できるのですが、
追加した新しいメソッドがVB側から参照できません。
追加した新しいメソッドをVB側から参照できるようにするには
どうしたらよいのでしょうか?
メソッドって?普通の関数でしょうか?
どのようなエラーメッセージが出るのでしょうか?
ご連絡ありがとうございます。
普通の関数です。
VC上ではコンパイルエラーなどはでません。
VB上でDLLを参照設定してオブジェクトブラウザで
確認すると機能追加したメソッド(関数)だけが
参照できません。
VB上でそのメソッドをcallする記述をすると
メソッド(関数)がないとのエラーが出ます。
以前のメソッドは使用でき、参照できるのですが、
追加したものだけ見れません。
> VB上でDLLを参照設定して
ということは、VC側はタイプライブラリ(COM)を作成したんですね。
(ならばメソッドという表現は正しいです)
> VB上でDLLを参照設定してオブジェクトブラウザで
> 確認すると機能追加したメソッド(関数)だけが
> 参照できません。
ということは、登録的なことが上手くいっていないとか。
あまり詳しくないので力になれずすいません。
タイプライブラリ(COM)とはなんですか?
私も使用したことがないので・・・。
以前のものは私が作成したものでないので。
> タイプライブラリ(COM)とはなんですか?
COMとはComponent Object Modelの略。
タイプライブラリーを使わずに拡張子「*.idl」のテーブルに追加しましたら認識するようになりました。 とりあえず、これで見て見ます。 普通はタイプライブラリを使って直すものでしょうか?
多分、COMの場合ソースの変更があれば「*.idl」のファイルも変更しないと
つかえないということでしょう。
タイプライブラリーを使わずではなく、VCのプロジェクト自体が
COMを作成するようなプロジェクト(ATL COMなんたら)になっているんでしょう。
(タイプライブラリはツールの名前ではないです。)
動作しましたが関数(メソッド)を追加するたびに「*.IDL」のソースファイルを書き換えてあげなければならないので何かの手続きで「*.IDL」を自動更新する方法があるものでしょうか? 初心者ですみません。
ソースにじかにメソッド追加するんじゃなくて、
ClassViewからメソッドの追加をすればIDLも同時に書かれますよ
ClassViewからメソッドの追加を
おこないましたがIDLは更新されませんでした。
やり方がわるいのでしょうか?
VC初心者
やっぱり、IDLを強制的に
書き換えた影響で同期がとれない状況です。
新しい引数を追加したのですがVB側で
新しい引数を認知してくれない状況です。
ClassViewでも追加しても、IDLに
反映されず困っております。
なにか「*.LIB」ファイルと「*.DLL」の
同期が取れていない感じです。
>やり方がわるいのでしょうか?
どうやったのかもっと詳しく書かないと
読んでる方もわからんよ
ClassViewからメソッドの
追加のやり方が悪く
「+」を開いてから「メソッドの追加」を
行わなかったようです。
すみませんでした。
「通りすがり」様のやり方が正解でした。
「*.H」、「*.CPP」、「*.IDL」に
メソッドが追加されました。
ツイート | ![]() |