No.1
- 回答日時:
>_stdcallで記述されたものではなく
>DllMainで記述されたものなのですが、
_stdcallとDllMain、まったく関係ないのですが・・・
両者の意味わかってますか?
_stdcallは、呼び出し規約(パラメータのスタックへのつみ方)で、
DllMain()はエントリポイントの関数名です。
CのDLLの関数をVBから呼べるようにするためには
1._stdcallで宣言する
2.__declspec(dllexport)をつけるか、DEFファイルを使用して関数をexportする
必要があります。
つまり、1、2の両方が満たされない関数はVBから呼ぶ方法はありません。
DEFファイルで定義しstdcallする事で解決しました。
ありがとうございました。
元々は
#define EXPORTS __declspec(dllexport)
でEXPORTS BOOL fnchoge(void)という形でしたが
これだとVBからdeclare fanctionで呼び出す事ができなかったのですが
どういった原因があるのでしょうか。
またご指摘の通りDLLMainについてよくわかっていません。
DLLMainですがVBから呼び出した場合も
エントリポイントとして意味があるのでしょうか?
今まではDLL作成の際、
DLLMainを作らずDLLを作成してたいのですが。
No.2ベストアンサー
- 回答日時:
>#define EXPORTS __declspec(dllexport)
>でEXPORTS BOOL fnchoge(void)という形でしたが
まず、_stdcallがないですね。_stdcallがないと、落ちるだけだと思うので、エラーとは関係ないですけど。
エラーの原因として考えられるのは、
__declspec(dllexport)を使うと、関数名が引数のバイト数で修飾されて、VBで呼び出すときの関数名が変わってしまうときがあるためだと思われます。
なお、実際にどんな名前でEXPORTされているかはDUMPBINや
Dependency Walker(どちらもVC++に付属)で調べることができます。
>DLLMainですがVBから呼び出した場合も
>エントリポイントとして意味があるのでしょうか?
DLLにおけるエントリポイントは、最初にVBからDLLがロードされたときに、一番最初にコールされる関数です。
普通のCのプログラムで考えると、LoadLiblary()で呼び出されたのと同じ状態です。
で、DllMain()は不要であれば作成する必要はありません。
個人的には、インスタンスハンドルを保存するのに作るときのほうが多いですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- その他(OS) OBSが起動できません 3 2022/03/30 12:21
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- その他(コンピューター・テクノロジー) パソ粥が壊れてしまい。 新しく買ったパソコンに Amplitued5 Max をダウンロードインスト 1 2022/05/22 00:33
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- その他(SNS・コミュニケーションサービス) ゲームでボイスチャットを使いたいんですが、親にどう説明したらいいですか 2 2022/08/03 14:07
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページビルダーの【×】マ...
-
ワードがなかなか閉じないです
-
コンパイル時のエラーについて...
-
急にXMLパースエラーが表示され...
-
勝手にdatファイルになるのです...
-
TSファイルをスムーズに再生したい
-
Windows Media Player 位置ス...
-
サーバーに転送したファイルが0...
-
ギガファイル便って女の人のエ...
-
PDFファイルをホームページ...
-
ファイルが勝手にダウンロード...
-
録音アプリのPCM録音で4時間録...
-
FFFTP、更新できません。
-
WordでURLをクリックしてそのペ...
-
DVD(映画ではなくLIVEやPV)を...
-
inkscapeで作成した図の保存の...
-
スマホ(Pixel 5a)とPCをUSBで...
-
ファイルをコピーしてる時にス...
-
messengerに投稿したwordファイ...
-
アプリケーションからfile://リ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
急にXMLパースエラーが表示され...
-
コンパイル時のエラーについて...
-
VB6 使用中ファイルの確認
-
ホームページビルダーの【×】マ...
-
ファイルopenエラーになってし...
-
ワードがなかなか閉じないです
-
リンカ 致命的エラーについて
-
属性の値に特殊文字が大量にあ...
-
Excelのハイパーリンクがエラー...
-
thunderbardでエラーが出ます。
-
VBAを記述したEXCELファイルを...
-
local by flywheelについて
-
エクセルVBA インデックスが有...
-
韓国に送った添付ファイルexcel...
-
フォルダの削除について
-
ファイルをアップロードするとh...
-
Borland C++ Compilerのエラー...
-
セッション削除でエラー
-
WinMx使用中に・・・「ファイル...
-
電子書籍epub変換について
おすすめ情報