
VB6から参照可能なDLLの作成を参考書をみながらしましたが、上手くいかない為質問させていただきます。
開発環境VC++ 2005
C++
CTEST.dll
#include <windows.h>
__declspec (dllexport) int __stdcall test(int i)
{
i = i + 5;
return i;
}
.defファイル
LIBRARY "test"
DESCRIPTION
EXPORTS
A
以上でDLLを作成し、VB6側で
Private Declare test Lib "CTEST.dll" (ByVal i as integer)
で宣言しても「エラー53 ファイルがみつかりません」と表示されます。「参照の追加」から参照しようとしても「このファイルは参照できません。」をエラーがでてしまいます。
直すべき点はどの部分なのでしょうか?
ご教示ねがいます。
No.2ベストアンサー
- 回答日時:
DEFファイルによる リネームを実行しないのであれば
__declspec (dllexport) int __stdcall test(int i)
この関数の VB6での宣言は
declare Function _test@4 Lib "CTEST.DLL" ( byVal n as Long) as Long
となります
関数名の先頭に _ 、関数名の最後に@と 引数が何バイト使っているかの整数になります
C側の宣言が
int myTest( int x, int y, int w, int h )
とすると VB6側では
_myTest@16 といった関数名になります
DEFファイルで
LIBRARY "test"
DESCRIPTION
EXPORTS
TEST @1
といった具合でエクスポートするなら VB6の宣言は
declare Function TEST Lib "CTEST.DLL" ( byVal n as Long) as Long
といった具合になります
VB6のプロジェクトと同じフォルダーにDLLがあれば実行時に読み込まれますよ
EXPORTS
A
とした場合は
declare Function A Lib "CTEST.DLL" ( byVal n as Long) as Long
となってしまうと思います
参照の追加 で追加できるのは ActiveX系やCOM型のDLLとなります
DLLインストール時に Regsvr32ででレジストリーにDLL登録して使うものになります
本当にファイルがコピーされているか確認しましょう
関数を使う前に
Dim ss As string
ss = Dir("CTEST.DLL")
MsgBox ss
で CTEST。DLL と表示されるか確認してみましょう
また 実行時の カレントフォルダーが違う可能性もありますよ
ChDirやChDriveなどで 変更していませんか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構造体を引数とする、クラス間...
-
main.c:7:43: warning: implici...
-
【#define】 defineで定義した...
-
C++/CLIでネイティブの構造体を...
-
2重定義って??
-
構造体の要素すべてに対する四...
-
C++でboolにintの値を代入する...
-
C++のコンストラクタを宣言する...
-
C#でオセロを作っているのです...
-
64bit → 32bit型へのキャスト
-
DWORDの実際の型は何でしょうか
-
C言語のコンパイルエラー
-
相互参照するクラス、俺こんな...
-
24ビットの変数
-
long型の定数の末尾にLを付ける...
-
最早開始時間と最遅完了時刻を...
-
Aの値からBの値を除するとは??
-
信頼区間の1.96や1.65ってどこ...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
main.c:7:43: warning: implici...
-
long型の定数の末尾にLを付ける...
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
2重定義って??
-
C++のfor文について
-
変数の型を定義しなかった場合...
-
ハンドルされていない例外が発...
-
intとINTの違いは?
-
C++でboolにintの値を代入する...
-
構造体の要素すべてに対する四...
-
プログラムの中で別のmainを呼...
-
エラー「invalid conversion fr...
-
GCCで暗黙の型変換の警告を出し...
-
【#define】 defineで定義した...
-
sshdログの意味
-
DDVによるメッセージの変更
-
typedef enumの使い方を教えて...
-
構造体を生成時にわざわざ初期...
-
DLLでLIBファイルが作成されない
おすすめ情報