掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DLLに複数の関数を登録するには (ID:53939)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
たくさん アドバイスありがとうございます。 残念ながらMSDNを読んだのですが、私のレベルではよく理解できません。 DUMPBINで装飾名を確認したのですが、呼び出される側のソースに記述した装飾名と一致しており、これを使う側のプログラムでも同じ名前で呼び出しています。 試しに、私が所有している書籍「スタンダードVisualC++」(技術評論社)に記載のサンプルソースで以下のような感じで試したのですがやはり結果は同じでした DLLのソース #include "stdafx.h" #include "resource.h" #include "RegularDLL.h" #ifdef _DEBUG #define new DEBUG_NEW #endif class CRegularDLLApp : public CWinApp { public: CRegularDLLApp() { } BOOL CRegularDLLApp::InitInstance() { CWinApp::InitInstance(); return TRUE; } DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP(CRegularDLLApp, CWinApp) END_MESSAGE_MAP() CRegularDLLApp app; LRESULT APIENTRY RegularDLLFunction(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString text = _T("最も簡単な標準 DLL"); AfxMessageBox(text); return ERROR_SUCCESS; } LRESULT APIENTRY RegularDLLFunction2(void)・・・・・・ここから追加分 { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString text = _T("最も簡単な標準2 DLL"); AfxMessageBox(text); return ERROR_SUCCESS; } DEFファイル LIBRARY "RegularDLL" EXPORTS RegularDLLFunction @2 RegularDLLFunction2 @3・・・・・・・追加分 ヘッダーファイル #ifndef __REGULERDLL_H__ #define __REGULERDLL_H__ #ifdef __cplusplus extern "C" { #endif LRESULT APIENTRY RegularDLLFunction(void); LRESULT APIENTRY RegularDLLFunction2(void);・・・追加分 #ifdef __cplusplus } #endif #endif /* __REGULERDLL_H__ */ これを呼出し側のプログラムからRegularDLLFunction(void)とRegularDLLFunction2(void)を呼び出して実行すると「序数3がダイナミックライブラリRegulerdllから見つかりませんでした。」と、エラーが出る次第です。 当然、追加前のプログラムは正常に動いており、追加後もコンパイルは問題なく出来ています。 また、追加を行わずに@2を@3に変更しただけでも同じようにエラーが発生します。MSDNに記述されている「序数値は1からNの範囲で指定する必要があります。NはDLLのエクスポート関数の数字です。・・・・」という文面の意味を私が理解できていないのが、原因かと思うのですが 再度、どなたか対応方法のご教授お願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.