我正在入侵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。

最佳答案

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

HWND testtest;


void CreateWindowInfo()
{
    testtest = hwndFrame;
    …
}


您当前正在做的是在CreateWindowInfo范围内创建一个新变量,以覆盖全局testtest,此全局之后将被销毁。

关于c++ - 无法解析的外部符号(已经阅读了类似的问题,但没有运气),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8770143/

10-11 04:02