VBからVCのDLLのメソッドを参照するには「

解決


そんでんほうし  2006-05-02 10:55:13  No: 61643  IP: 192.*.*.*

以前FTP、HTTP転送を行うDLLをVCで作成しました。
それをVB側のアプリケーションで使用しています。
今回、機能追加により新しいメソッドを追加しました。
ところが以前からあるメソッドは参照できるのですが、
追加した新しいメソッドがVB側から参照できません。
追加した新しいメソッドをVB側から参照できるようにするには
どうしたらよいのでしょうか?

編集 削除
Blue  2006-05-02 11:03:03  No: 61644  IP: 192.*.*.*

メソッドって?普通の関数でしょうか?
どのようなエラーメッセージが出るのでしょうか?

編集 削除
そんでんほうし  2006-05-02 11:09:43  No: 61645  IP: 192.*.*.*

ご連絡ありがとうございます。
普通の関数です。
VC上ではコンパイルエラーなどはでません。
VB上でDLLを参照設定してオブジェクトブラウザで
確認すると機能追加したメソッド(関数)だけが
参照できません。
VB上でそのメソッドをcallする記述をすると
メソッド(関数)がないとのエラーが出ます。
以前のメソッドは使用でき、参照できるのですが、
追加したものだけ見れません。

編集 削除
Blue  2006-05-02 11:16:56  No: 61646  IP: 192.*.*.*

> VB上でDLLを参照設定して
ということは、VC側はタイプライブラリ(COM)を作成したんですね。
(ならばメソッドという表現は正しいです)

> VB上でDLLを参照設定してオブジェクトブラウザで
> 確認すると機能追加したメソッド(関数)だけが
> 参照できません。
ということは、登録的なことが上手くいっていないとか。
あまり詳しくないので力になれずすいません。

編集 削除
そんでんほうし  2006-05-02 11:44:24  No: 61647  IP: 192.*.*.*

タイプライブラリ(COM)とはなんですか?
私も使用したことがないので・・・。
以前のものは私が作成したものでないので。

編集 削除
Blue  2006-05-02 12:15:28  No: 61648  IP: 192.*.*.*

> タイプライブラリ(COM)とはなんですか?
COMとはComponent Object Modelの略。

編集 削除
そんでんほうし  2006-05-02 13:14:26  No: 61649  IP: 192.*.*.*

タイプライブラリーを使わずに拡張子「*.idl」のテーブルに追加しましたら認識するようになりました。  とりあえず、これで見て見ます。  普通はタイプライブラリを使って直すものでしょうか?

編集 削除
Blue  2006-05-02 13:22:31  No: 61650  IP: 192.*.*.*

多分、COMの場合ソースの変更があれば「*.idl」のファイルも変更しないと
つかえないということでしょう。

タイプライブラリーを使わずではなく、VCのプロジェクト自体が
COMを作成するようなプロジェクト(ATL COMなんたら)になっているんでしょう。
(タイプライブラリはツールの名前ではないです。)

編集 削除
そんでんほうし  2006-05-03 11:13:22  No: 61651  IP: 192.*.*.*

動作しましたが関数(メソッド)を追加するたびに「*.IDL」のソースファイルを書き換えてあげなければならないので何かの手続きで「*.IDL」を自動更新する方法があるものでしょうか?  初心者ですみません。

編集 削除
通りすがり  2006-05-03 20:27:20  No: 61652  IP: 192.*.*.*

ソースにじかにメソッド追加するんじゃなくて、
ClassViewからメソッドの追加をすればIDLも同時に書かれますよ

編集 削除
そんでんほうし  2006-05-05 12:51:49  No: 61653  IP: 192.*.*.*

ClassViewからメソッドの追加を
おこないましたがIDLは更新されませんでした。
やり方がわるいのでしょうか?
VC初心者

編集 削除
そんでんほうし  2006-05-05 14:00:12  No: 61654  IP: 192.*.*.*

やっぱり、IDLを強制的に
書き換えた影響で同期がとれない状況です。
新しい引数を追加したのですがVB側で
新しい引数を認知してくれない状況です。
ClassViewでも追加しても、IDLに
反映されず困っております。
なにか「*.LIB」ファイルと「*.DLL」の
同期が取れていない感じです。

編集 削除
んー  2006-05-05 16:17:14  No: 61655  IP: 192.*.*.*

>やり方がわるいのでしょうか?
どうやったのかもっと詳しく書かないと
読んでる方もわからんよ

編集 削除
そんでんほうし  2006-05-07 11:13:18  No: 61656  IP: 192.*.*.*

ClassViewからメソッドの
追加のやり方が悪く
「+」を開いてから「メソッドの追加」を
行わなかったようです。
すみませんでした。
「通りすがり」様のやり方が正解でした。
「*.H」、「*.CPP」、「*.IDL」に
メソッドが追加されました。

編集 削除