VS2010 Express でコンパイルしようとしている単純な DLL があります。DLL のコードは次のとおりです。
#pragma comment(linker, "/EXPORT:PlusOne=_PlusOne@4")
#include <windows.h>
#include <commctrl.h>
extern "C" __declspec(dllexport) int PlusOne(int inNum)
{
inNum++;
return inNum;
};
extern "C" __declspec(dllexport) LRESULT CALLBACK OwnerDrawButtonProc(HWND hWnd, UINT uMsg, WPARAM wParam,
LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
//further processing will go here
return DefSubclassProc(hWnd, uMsg, wParam, lParam);
};
プロジェクト オプションで __stdcall が選択されている
plusOne 関数自体は正常にコンパイルされますが、2 番目の関数はコンパイルされません。
DefSubclassProc は commctrl.h で宣言されていますが、関数でエラーが発生します。検索されたライブラリ (この関数が存在する commdlg32 を含む) を含む完全なエラー テキストは以下のとおりです。
1> Searching libraries
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winmm.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shell32.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbc32.lib:
1> Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbccp32.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\MSVCRT.lib:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.lib:
1>
1> Finished searching libraries
1>dlltest.obj : error LNK2001: unresolved external symbol _DefSubclassProc@16
1>s:\documents\my documents\visual studio 2010\Projects\dlltest\Release\dlltest.dll : fatal error LNK1120: 1 unresolved externals
関数が見つからないようですが、ライブラリとヘッダーが存在するため、理由がわかりません。
コードの動機はさておき、vbaでウィンドウをサブクラス化することですが、vbaでwindowprocedureを使用すると非常に不安定になるため、試してdllに移動したいと思います。
ここで何が問題なのかを理解するのを手伝ってください。