DLLをコンパイルしようとして問題が発生しましたが、このリンクエラーがどこから来ているのかわかりません。
私のLNK2019は:
Exports.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: int
__thiscall CArray<struct HWND__ *,struct HWND__ *>::Add(struct HWND__ *)" (__imp_?Add@?
$CArray@PAUHWND__@@PAU1@@@QAEHPAUHWND__@@@Z) referenced in function "int __stdcall _Disable(struct
HWND__ *,long)" (?_Disable@@YGHPAUHWND__@@J@Z)
Disable(...)は...
static BOOL CALLBACK _Disable(HWND hwnd, LPARAM lParam)
{
CArray<HWND, HWND>* pArr = (CHWndArray*)lParam;
if(::IsWindowEnabled(hwnd) && ::IsWindowVisible(hwnd))
{
pArr->Add(hwnd);
::Enable(hwnd, FALSE);
}
}
これは、Exports.cppの最初の関数です。その真上は
#include <afxtempl.h>
Windows 7.1 SDKをインストールしています(そして、Windows 7.1 SDKとVS2010の両方を再インストールしてみました)。まったく同じプロジェクトが他のマシンで完全に正常にコンパイルされるため、コード自体ではありません。調査に数え切れないほどのエラーを費やし、さまざまなWindowsヘッダーを含むソリューションファイルのランダムな値を変更するという必死の試みにつながりました。私の最後の手段は、OSを完全に再インストールすることです(実際には、Windows SDKが正しくないか何かの問題であると想定しています)。
どんな提案でも大きな助けになるでしょう。
編集:cppの問題に/ showIncludesを追加しましたが、afxtempl.hが含まれているのがわかります。それを含む他のヘッダーのために複数回含まれていますが、そこにあります(そしてそれは毎回同じディレクトリからのものです):
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afxtempl.h