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

unresolved external symbol (already read similar questions, but no luck)

本文关键字:问题 运气 符号 外部 未解决      更新时间:2023-10-16

我正在破解苏门答腊PDF源代码,我遇到了问题。我需要修改 3 个文件: SumatraPDF.cppSumatraPDF.hSearch.cpp。我在SumatraPDF.h中添加extern HWND testtest;,并在SumatraPDF.cpp中定义的函数CreateWindowInfo()中添加HWND testtest = hwndFrame;。(这里 hwndFrame 是某个 GUI 窗口的 hwnd,在创建 GUI 窗口时为其分配值。到目前为止,它可以成功编译。现在我需要在 Search.cpp 中定义的函数中使用 testtest,所以我用 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的作用域内创建一个新变量,该变量随后被销毁。