人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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)
→エラー発生。

以上、
よろしくお願いします。


●質問者: futurista
●カテゴリ:コンピュータ
✍キーワード:ActiveX as DLL LIB MMM
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● TONTON3
●30ポイント

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)

でよいと思います。

◎質問者からの返答

回答有難うございます。

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

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

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

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

Dim objTest As Object

Set objTest = CreateObject("math_chg.Class1")

mmm = objTest.DLL_FUNC_test(3, 6)

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


2 ● TONTON3
●15ポイント

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


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

◎質問者からの返答

回答有難うございます。

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

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


3 ● bmax
●15ポイント

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

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

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

◎質問者からの返答

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

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

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

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

regsvr32 "C:\work\math_chg.dll"


4 ● mj99
●50ポイント ベストアンサー

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

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

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

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

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

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

Set objTest = CreateObject("Project1.Class1")

です。

----

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

◎質問者からの返答

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

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

有難うございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ