我正在修改SumatraPDF的源代码,我遇到了一个问题。有3个文件我需要修改:SumatraPDF.cpp,SumatraPDF.h和Search.cpp。我在SumatraPDF.h中添加了extern HWND testtest;,并在SumatraPDF.cpp中定义的函数CreateWindowInfo()中添加了HWND testtest = hwndFrame;。(这里的hwndFrame是某个图形用户界面窗口的hwnd,在创建图形用户界面窗口时会为其赋值。)到目前为止,它可以成功编译。现在我需要在Search.cpp中定义的函数中使用testtest,所以我用Search.cpp编写
win = FindWindowInfoByHwnd(testtest);但现在我得到了错误
*Search.obj :错误测试:未解析的外部符号"struct HWND__ *LNK2001“(?testtest@@3PAUHWND__@@A)*
我检查了一下,我在Search.cpp中有#include "SumatraPDF.h",但是我不知道问题出在哪里。
那么为什么Search.cpp可以使用在SumatraPDF.h中定义的全局变量testtest,而SumatraPDF.cpp可以呢?
我的环境是Visual Studio 2010。
发布于 2012-01-07 21:52:38
您必须在函数外部定义testtest。您可以稍后分配它:
HWND testtest;
void CreateWindowInfo()
{
testtest = hwndFrame;
…
}您当前正在做的是在CreateWindowInfo的作用域中创建一个新变量,隐藏全局testtest,该变量随后将被销毁。
https://stackoverflow.com/questions/8770143
复制相似问题