нерешенный внешний символ (уже читал похожие вопросы, но не повезло) - PullRequest
0 голосов
/ 07 января 2012

Я взламываю исходный код SumatraPDF, и у меня возникла проблема.Мне нужно изменить 3 файла: SumatraPDF.cpp, SumatraPDF.h и Search.cpp.Я добавляю extern HWND testtest; в SumatraPDF.h и добавляю HWND testtest = hwndFrame; в функцию CreateWindowInfo(), которая определена в SumatraPDF.cpp.(Здесь hwndFrame - это hwnd некоторого окна GUI, которому присваивается значение при создании окна GUI.) До сих пор его можно было успешно скомпилировать.Теперь мне нужно использовать testtest в функции, которая определена в Search.cpp, поэтому я пишу в Search.cpp

win = FindWindowInfoByHwnd(testtest);

Но теперь я получаю ошибку

* Поиск.obj: ошибка LNK2001: неразрешенный внешний символ "struct HWND__ * testtest" (? testtest @@ 3PAUHWND __ @@ A) *

Я проверил, что у меня #include "SumatraPDF.h" в Search.cpp, и я не могу понятьВ чем проблема.

Так почему Search.cpp может использовать глобальную переменную testtest, которая определена в SumatraPDF.h, а SumatraPDF.cpp может?

Моя среда Visual Studio 2010.

1 Ответ

3 голосов
/ 07 января 2012

Вы должны определить testtest вне функции.Вы можете назначить его позже:

HWND testtest;


void CreateWindowInfo()
{
    testtest = hwndFrame;
    …
}

В настоящее время вы создаете новую переменную внутри области действия CreateWindowInfo, скрывая глобальный testtest, который впоследствии уничтожается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...