Ошибка компоновщика при компиляции vshadow, части SDK службы теневого копирования томов - PullRequest
1 голос
/ 05 апреля 2009

Я получаю эту ошибку компоновщика при попытке скомпилировать проект c ++ для VSS SDK

Error   1   error LNK2019: unresolved external symbol "long __stdcall ShouldBlockRevert(wchar_t const *,bool *)" (?ShouldBlockRevert@@YGJPB_WPA_N@Z) referenced in function "public: void __thiscall VssClient::RevertToSnapshot(struct _GUID)" (?RevertToSnapshot@VssClient@@QAEXU_GUID@@@Z)   revert.obj  vshadow

mustBlockRevert используется дважды, один раз, когда он объявлен сверху, и один раз, когда он фактически используется.

Объявлено здесь:

HRESULT APIENTRY ShouldBlockRevert(IN LPCWSTR wszVolumeName, OUT bool* pbBlock);

и используется здесь:

CHECK_COM(::ShouldBlockRevert(Snap.m_pwszOriginalVolumeName, &bBlock));
    if (bBlock)
    {
        ft.WriteLine(L"Revert is disabled on the volume %s because of writers",
                Snap.m_pwszOriginalVolumeName);
        return;
    }

Извините, я не так хорош с c ++.

1 Ответ

2 голосов
/ 05 апреля 2009

Согласно этому сообщению в блоге:

Как это случилось, я запустил dumpbin / exports на vssapi.lib и обнаружил, что он экспортирует ShouldBlockRevert, но благодаря искажению имени в C ++ искаженное имя отличается. Почему это отличается? Потому что в vssapi.lib первым аргументом для ShouldBlockRevert является не wchar_t, а короткий unsigned. «Ну и что», вы думаете, «они эквивалентны». И я не согласен, но компилятор рассматривает их как разные типы для целей управления именами. Что за исправление? Хорошо, отключите встроенный тип wchar_t на странице свойств языка C / C ++ в свойствах проекта (эквивалентно переключателю / Zc: wchar_t, если вы один из двух людей на планете, которые создают проекты Visual C ++ с помощью make-файлов).

Как только это будет сделано, макрос LPCWSTR определен для коротких без знака, совпадений имен, выравнивания планет и вы можете связать. Что и требовалось доказать.

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