日峰です。

多分この時間では答える人がいないと思うので。
# 読む人もいなかったりして。

> DLLについてです。
> VC++側で作ったDLLをVBで呼び出せるのかなぁと思って、
> ためしに、VCで
>
> #define EXPORT __declspec(dllexport)
>
> EXPORT void msg(HWND hwnd)
> {
> MessageBox(hwnd, "test", "test", MB_OK);
> }
>
> ってな感じでDLL(ファイル名test.dll)を作成して、VB側で
> Public Declare Sub msg Lib "test" (ByVal hwnd As Long)
> としてみたんですが、「エントリtestが見つかりません」
> とか言われて出来ませんでした。

私は、VBを使っていないので判りませんが、
test はDLLだから、エントリは msg の方では?。

> それで、なんとなく最初のところを
> #define EXPORT extern "C" __declspec(dllexport)

# なんとなくでは extern "C" に気が付きませんね。

> としてみたら、なぜかメッセージボックスは表示できたんですが、
> その後「正しく呼び出せません」って言われてしまうんです。
> 一体どうなってるんでしょう??

EXPORT void __stdcall msg(HWND hwnd)
としましょう。

意味はヘルプで判ると思います。
VBのコール方法にあわせる必要があるからです。

> っていうか__declspec(dllexport)とはどういう意味なんですか?

別の実行プログラムから msg を呼べるようになります。
これが無いと、 msg は普通のサブルーチンであり、呼び出すことができません。

仕組みをいうと、 test.dll のある場所に msg の名前とアドレスが書かれて、
プログラムがそれを見て、test.dll の msg をコールできるようになります。

> ・・・あ、質問多くなってすいません。
> はっきり言ってDLLって何なのかってとこからしてよく分かってないんすよね・
・。

DLLの説明は話が長いので省略。

# よくわからないのに、
# > VC++側で作ったDLLをVBで呼び出せるのかなぁと思って、
# > ためしに、VCで
# という発想で作ってしまうその心がわかりません。

# 普段使っているWin32API も仕組みはDLLだったりします。

> とりあえず、VBからVC側で作ったDLLを呼び出す一連の方法を教えてほしいです。
> では、よろしくです。

一連というと、すべてですか?。
でも既にあなたは呼ぶことに成功していますね。
ということで、VBを使っていない私よりあなたのほうが詳しいです。

# 前は、defファイルを書いたけど、今のVBは書かなくてもいいのかなあ?。