プロが教えるわが家の防犯対策術!

WIN2000のVC++6.0を使ってWin32DLLを作成して、VBから呼びたいのですが、「エントリ関数がDLLファイル内に見つからない」言われるので、ためしにVCから呼んでみたのですが、表題のようなエラーになります。内容は入門書のサンプル通りに作ってみたのですが・・・ちゃんとEXPORTされていないのでしょうか?
[DLL側]
<ヘッダファイル>
#ifdef XXXX_EXPORTS
#define XXXX_API __declspec(dllexport)
#else
#define XXXX_API __declspec(dllimport)
#endif

XXXX_API long AddLong(long a, long b);
<ソースファイル>
XXXX_API long AddLong(long a, long b)
{
return a + b;
}
[呼び出し側VC]
#include "stdafx.h"
#include "XXXX.h"

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
TCHAR s[20];
wsprintf(s,"%d",AddLong(123,456));
MessageBox(NULL,s,"DLLの参照",MB_OK);
return 0;
}
プロジェクトの設定のリンク時のライブラリには
XXXX.lib を追加しました。

初めてのDLL作成でよく分かりません。

A 回答 (3件)

呼び出し規約、関数装飾名、DllMainは本当にエクスポートされているのかなど。


Dllを作成した後は意図したとおりにエクスポートされているかを確認するために迷わずDependency Walkerを使用してください。
    • good
    • 0

以下のような XXXX.def ファイルを作って、それを VC++


のプロジェクトに追加してみて下さい。

XXXX.def ファイル内容
----- ここから
 LIBRARY XXXX
 EXPORTS
   AddLong
----- ここまで


XXXX.def 追加方法
 メニューバーの「プロジェクト」
 → 「プロジェクトに追加」
 → 「ファイル」
 で「プロジェクトへファイルを追加」画面が表示される
 ので、そこで XXXX.def を追加する。
    • good
    • 0

DLLのソースにDllMain()関数はありますか?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!