При выполнении сборки этого решения происходит сбой сборки одного проекта, как описано в следующем сообщении об ошибке:
Код: Выделить всё
1>pdfwrap.obj : error LNK2001: unresolved external symbol _HPDF_New
1>pdfwrap.obj : error LNK2001: unresolved external symbol _HPDF_LoadTTFontFromFile
1>pdfwrap.obj : error LNK2001: unresolved external symbol _HPDF_Free
Код: Выделить всё
C:\Development\workarea\\
\Release\pdfwrap.obj
Код: Выделить всё
C:\Development\workarea\Debug\hpdf.dll
C:\Development\workarea\\
\vcpkg_installed\x86-windows\x86-windows\bin\hpdf.dll
C:\Development\workarea\\\vcpkg_installed\x86-windows\x86-windows\debug\bin\hpdf.dll
C:\Development\workarea\\\vcpkg_installed\x86-windows\x86-windows\debug\lib\hpdf.lib
C:\Development\workarea\\\vcpkg_installed\x86-windows\x86-windows\lib\hpdf.lib
C:\Development\workarea\vcpkg\buildtrees\libharu\x86-windows-dbg\src\hpdf.dll
C:\Development\workarea\vcpkg\buildtrees\libharu\x86-windows-dbg\src\hpdf.lib
C:\Development\workarea\vcpkg\buildtrees\libharu\x86-windows-rel\src\hpdf.dll
C:\Development\workarea\vcpkg\buildtrees\libharu\x86-windows-rel\src\hpdf.lib
C:\Development\workarea\vcpkg\packages\libharu_x86-windows\bin\hpdf.dll
C:\Development\workarea\vcpkg\packages\libharu_x86-windows\debug\bin\hpdf.dll
C:\Development\workarea\vcpkg\packages\libharu_x86-windows\debug\lib\hpdf.lib
C:\Development\workarea\vcpkg\packages\libharu_x86-windows\lib\hpdf.lib
Для файла *.lib:
Код: Выделить всё
dumpbin /exports C:\Development\workarea\vcpkg\packages\libharu_x86-windows\lib\hpdf.lib | findstr /WI "HPDF_New"
_HPDF_New@8
Код: Выделить всё
dumpbin /Exports C:\Development\workarea\vcpkg\packages\libharu_x86-windows\bin\hpdf.dll | findstr /I "HPDF_New"
356 163 00006A60 HPDF_New = _HPDF_New@8
- Либо он все равно ее не находит (из-за @8 в конце имени?)
- Либо он ищет не в том каталоге.

Это привело к появлению следующих дополнительных журналов в журнале сборки:
Код: Выделить всё
1> Searching libraries
1> Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.26100.0\um\x86\UxTheme.lib:
1> Searching C:\Development\workarea\\
\vcpkg_installed\x86-windows\x86-windows\lib\hpdf.lib:
1> Searching C:\Development\workarea\\\vcpkg_installed\x86-windows\x86-windows\lib\libpng16.lib:
1> Searching C:\Development\workarea\\\vcpkg_installed\x86-windows\x86-windows\lib\zlib.lib:
1> Searching C:\Development\workarea\Release\:
1> Searching C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.44.35207\:
1> Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.26100.0\um\x86\:
1> Searching C:\Program Files (x86)\Windows Kits\10\lib\10.0.26100.0\ucrt\x86\ucrt.lib:
1> Finished searching libraries
1> pdfwrap.obj : error LNK2001: unresolved external symbol \_HPDF_New
Код: Выделить всё
dumpbin /exports C:\Development\workarea\\
\vcpkg_installed\x86-windows\x86-windows\lib\hpdf.lib | findstr /I "HPDF_New"
_HPDF_New@8
Код: Выделить всё
dumpbin /exports C:\Development\workarea\\
\vcpkg_installed\x86-windows\x86-windows\bin\hpdf.dll | findstr /I "HPDF_New"
356 163 00006A60 HPDF_New = _HPDF_New@8
Сосредоточьтесь на 32-битной и 64-битной версиях:
В комментариях кто-то написал, что суффикс @8 имени функции может означать, что соответствующая DLL была скомпилирована в 64-битной версии, пока я работаю с 32-битная программа.
Однако это, похоже, опровергается проверкой sigCheck:
Код: Выделить всё
C:\Development\workarea\\
\vcpkg_installed\x86-windows\x86-windows\bin>sigcheck hpdf.dll
Sigcheck v2.90 - File version and signature viewer
Copyright (C) 2004-2022 Mark Russinovich
Sysinternals - www.sysinternals.com
C:\Development\workarea\\\vcpkg_installed\x86-windows\x86-windows\bin\hpdf.dll:
...
MachineType: 32-bit
В исходном коде функция _HPDF_New() вызывается следующим образом:
Код: Выделить всё
HPDF_Doc pdfTempDoc = HPDF_New(nullptr, nullptr);
:
#ifndef HPDF_EXPORT
#define HPDF_EXPORT(A) A
#endif /* HPDF_EXPORT */
...
#ifdef __cplusplus
extern "C" {
#endif
...
HPDF_EXPORT(HPDF_Doc)
HPDF_New (HPDF_Error_Handler user_error_fn,
void *user_data);
Код: Выделить всё
#ifdef __cplusplus
# error "__cplusplus is defined"
#endif
#ifndef __cplusplus
# error "__cplusplus is not defined"
#endif

Подробнее здесь: https://stackoverflow.com/questions/799 ... ng-problem
Мобильная версия