未解决的外部符号(已经读过类似的问题,但没有运气)

时间:2012-01-07 13:48:46

标签: c++ visual-studio-2010 visual-c++

我正在攻击SumatraPDF源代码,我遇到了问题。我需要修改3个文件: SumatraPDF.cppSumatraPDF.hSearch.cpp。我在extern HWND testtest;中添加SumatraPDF.h,并在HWND testtest = hwndFrame;中定义的函数CreateWindowInfo()中添加SumatraPDF.cpp。 (这里hwndFrame是某个GUI窗口的hwnd,在创建GUI窗口时会为其分配值。)到目前为止,它可以成功编译。现在我需要在testtest中定义的函数中使用Search.cpp,所以我写入Search.cpp

win = FindWindowInfoByHwnd(testtest);

但现在我收到了错误

* Search.obj:错误LNK2001:未解析的外部符号“struct HWND__ * testtest”(?testtest @@ 3PAUHWND __ @@ A)*

我检查#include "SumatraPDF.h"中有Search.cpp,我无法弄清问题是什么。

那么为什么Search.cpp可以使用testtest中定义的全局变量SumatraPDF.h,但SumatraPDF.cpp可以?

我的环境是Visual Studio 2010.

1 个答案:

答案 0 :(得分:3)

您必须在函数之外定义testtest。您可以稍后再分配:

HWND testtest;


void CreateWindowInfo()
{
    testtest = hwndFrame;
    …
}

您目前正在做的是在CreateWindowInfo范围内创建一个新变量,以遮蔽后来被销毁的全局testtest