VisualBasic6.0(以下、VB6)にてActiveX DLLを作成して、別のVB6のプロジェクトから

DLL内の関数を参照しようと思っていますが、以下のエラーメッセージが表示され、
うまく出来ません。
「実行時エラー'453':
エントリxxxxがDLLファイルyyyy内に見つかりません。」
ここで、xxxxは関数名でyyyyはDLLファイル名です。

解決方法をご存知の方がいらっしゃいましたら、教えて下さい。

■ActiveX DLLの作成
1.VB6.0の新規作成にて、ActiveX DLLを選択
2.Class1上に適当な関数を作成。
 Public Function DLL_FUNC_test(i As Integer, j As Integer) As Integer

DLL_FUNC_test = i + j

End Function
3.メニューよりDLL作成を行う。→DLLファイルが出来ました。
4.作成されたDLLファイルをc:\work\配下へ配置。

■別のPJでの参照
1. 任意のForm上部に以下の宣言を行いました。
Private Declare Function DLL_FUNC_test Lib "c:\work\math_chg.dll" _
(ByVal i As Integer, ByVal j As Integer) As Integer

2.適当な箇所で以下に示すような関数をコールする構文を記述しました。

 mmm = DLL_FUNC_test(3, 6)
   →エラー発生。
   
以上、
よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/05/08 13:44:42
  • 終了:2008/05/08 21:11:07

ベストアンサー

id:mj99 No.4

mj99回答回数138ベストアンサー獲得回数382008/05/08 20:03:46

ポイント50pt

CreateObjectに指定する文字列は、"プロジェクト名.オブジェクト名"を指定します。

以下の個所を確認してください。

・ActiveX DLLプロジェクトの「プロジェクト名」(ファイル名ではない)。

 VBのメニュー「プロジェクト」→「?????のプロパティ」→「全般」タブ→「プロジェクト名」

・クラスファイルの「オブジェクト名」(ファイル名ではない)。

プロジェクト名が"Project1"で、オブジェクト名が"Class1"だったら

Set objTest = CreateObject("Project1.Class1")

です。

----

VB で最小の ActiveX コンポーネントを作成して使用する方法

id:futurista

ご丁寧な回答有難うございます。

DLLの関数を使用することが出来ました。

有難うございました。

2008/05/08 21:08:51

その他の回答(3件)

id:TONTON3 No.1

TONTON3回答回数212ベストアンサー獲得回数42008/05/08 14:50:07

ポイント30pt

http://q.hatena.ne.jp/1210221881

Declare分は必要ありません。

CreateObject でDLLを作成するか参照設定で作成したDLLを参照してください。

書き方はこのようになります。


Dim objTest as object

set objTest = CreateObject("yyyy.Class1")

mmm = objTest.DLL_FUNC_test(3, 6)

でよいと思います。

id:futurista

回答有難うございます。

Declare文を削除のうえ、関数コール部分を

以下の記述に変更しましたが、2行目のところで、

「実行時エラー429:ActiveXコントロールはオブジェクトを作成できません。」

とのエラーが発生します。

Dim objTest As Object

Set objTest = CreateObject("math_chg.Class1")

mmm = objTest.DLL_FUNC_test(3, 6)

誤り等あれば、ご指摘をお願い致します。

2008/05/08 15:28:52
id:TONTON3 No.2

TONTON3回答回数212ベストアンサー獲得回数42008/05/08 15:46:07

ポイント15pt

http://support.microsoft.com/kb/166277/ja


作成の方法はこのようにつくれば問題ないとおもいます。

id:futurista

回答有難うございます。

WEBサイトを参考(ActiveX DLLの作成、Visual Basic テスト クライアントの作成 )に

記述しましたが同じエラーが出ます。

2008/05/08 16:28:07
id:bmax No.3

bmax回答回数67ベストアンサー獲得回数162008/05/08 17:15:39

ポイント15pt

質問文にあるこれまでの手順に記載がなかったので、もしかしてと思ったのですが

RegSvr32.exeを使用して、作成したActiveX DLLを登録されましたでしょうか?

http://www3.ocn.ne.jp/~tonko/HP13_02.htm

id:futurista

ご指摘有難うございます。

記述が漏れておりました。

「スタート」--->「ファイル名を指定して実行」

より以下を実施しています。

regsvr32 "C:\work\math_chg.dll"

2008/05/08 17:20:51
id:mj99 No.4

mj99回答回数138ベストアンサー獲得回数382008/05/08 20:03:46ここでベストアンサー

ポイント50pt

CreateObjectに指定する文字列は、"プロジェクト名.オブジェクト名"を指定します。

以下の個所を確認してください。

・ActiveX DLLプロジェクトの「プロジェクト名」(ファイル名ではない)。

 VBのメニュー「プロジェクト」→「?????のプロパティ」→「全般」タブ→「プロジェクト名」

・クラスファイルの「オブジェクト名」(ファイル名ではない)。

プロジェクト名が"Project1"で、オブジェクト名が"Class1"だったら

Set objTest = CreateObject("Project1.Class1")

です。

----

VB で最小の ActiveX コンポーネントを作成して使用する方法

id:futurista

ご丁寧な回答有難うございます。

DLLの関数を使用することが出来ました。

有難うございました。

2008/05/08 21:08:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません