• 締切済み

エントリポイントがDLLから見つからない

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作成でよく分かりません。

みんなの回答

回答No.3

呼び出し規約、関数装飾名、DllMainは本当にエクスポートされているのかなど。 Dllを作成した後は意図したとおりにエクスポートされているかを確認するために迷わずDependency Walkerを使用してください。

  • e101tre
  • ベストアンサー率38% (7/18)
回答No.2

以下のような XXXX.def ファイルを作って、それを VC++ のプロジェクトに追加してみて下さい。 XXXX.def ファイル内容 ----- ここから  LIBRARY XXXX  EXPORTS    AddLong ----- ここまで XXXX.def 追加方法  メニューバーの「プロジェクト」  → 「プロジェクトに追加」  → 「ファイル」  で「プロジェクトへファイルを追加」画面が表示される  ので、そこで XXXX.def を追加する。

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.1

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