Как решить привязку pdfium на windows 10

У меня есть main.cpp в Windows в каталоге C:\repo\pdfium\out\debug\obj\test. Pdfium.lib находится в каталоге obj.

#include <stdio.h>
#include <fpdfview.h>
int main() {
FPDF_InitLibrary();
FPDF_DestroyLibrary();
printf("PDFium hello.\n");
return 0;}

pdfium.lib построен с использованием GCC (is_lang=false)

С помощью команды я создаю main.o

g++.exe -std=c++11 -g -I........\public -c C:\repo\pdfium\out\debug\obj\test\main.cpp -o obj\Debug\ main.o

С помощью команды ниже я пытаюсь связать pdfium.lib

g++.exe  -o bin\Debug\test.exe obj\Debug\main.o   ..\pdfium.lib

Но я беру...

Warning: corrupt .drectve at end of def file
..\pdfium.lib(obj/core/fpdfapi/parser/parser/fpdf_parser_utility.obj):(.xdata[$unwind$?_Makestr@_System_error@std@@CA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@Verror_code@2@V32@@Z]+0x8): undefined reference to `__GSHandlerCheck'

Я пробовал так много раз, но ничего не связывал в Windows 10. Любой совет будет искупительным.

Спасибо

Джим


person Dim Kaip    schedule 03.09.2020    source источник
comment
Я пытался собрать pdfium с MinGW-w64 под MSYS2, и, похоже, он использует gn в качестве инструмента сборки. В моей системе есть gn, но я не могу заставить его настроить/собрать проект. Как вы собираете pdfium?   -  person Brecht Sanders    schedule 08.01.2021
comment
@BrechtSanders Вероятно, стоит задать это в отдельном вопросе, если вы все еще заинтересованы в ответе.   -  person blm768    schedule 06.02.2021


Ответы (1)


Если вы собираете PDFium с некомпонентной сборкой (is_component_build = false в args.gn) и не устанавливаете pdf_is_complete_lib = true, сгенерированные .lib файлы не будут включать свои зависимости, поэтому вполне вероятно, что компоновщик будет жаловаться на отсутствующие символы. Попробуйте либо сгенерировать библиотеки DLL (is_component_build = true), либо установить pdf_is_complete_lib = true.

Если вы используете компонентную сборку, вам потребуется упаковать PDFium DLL и ее зависимости (по крайней мере, zlib DLL, возможно, другие) вместе с вашим приложением.

person blm768    schedule 05.02.2021