我在尝试编译 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)
禁用(...)是...
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(并尝试重新安装它和 VS2010)。完全相同的项目在其他机器上编译得非常好,所以它不可能是代码本身。我花了无数的错误研究,这导致绝望地尝试改变解决方案文件中的随机值,包括不同的 Windows 头文件,等等。我最后的手段是完全重新安装操作系统(假设它实际上是 Windows SDK 不正确或其他问题)。
任何建议都会有很大的帮助。
编辑:我在 cpp 提供问题上添加了 /showIncludes,我确实看到 afxtempl.h 被包括在内。由于包含它的其他标头,它被多次包含,但它在那里(并且每次都来自同一个目录):
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afxtempl.h