我正在入侵SumatraPDF源代码,但遇到了问题。我需要修改3个文件:SumatraPDF.cpp
,SumatraPDF.h
和Search.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。
最佳答案
您必须在函数外部定义testtest。您可以稍后分配:
HWND testtest;
void CreateWindowInfo()
{
testtest = hwndFrame;
…
}
您当前正在做的是在
CreateWindowInfo
范围内创建一个新变量,以覆盖全局testtest
,此全局之后将被销毁。关于c++ - 无法解析的外部符号(已经阅读了类似的问题,但没有运气),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8770143/