0

我在尝试编译 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
4

1 回答 1

0

只是为了回答这个问题——我最终从我们的 SVN 中重新检查了所有内容并重新编译了所有内容。我认为我们的一个项目出于某种原因搞砸了。

于 2012-10-26T00:11:30.563 回答