Я пытаюсь перевести эту команду qpdf:
qpdf --qdf --object-streams = отключить input.pdf editable.pdf
в эквивалентные вызовы методов, которые понадобятся мне при использовании библиотеки qpdf (доступно здесь: https://sourceforge.net/projects/qpdf/).
Я запустил dll qpdf через dumpbin, чтобы получить имена функций, и, просмотрев файлы заголовков, которые были включены для использования в проекте c ++, я могу увидеть параметры для функций.
Например, функция, необходимая для передачи описанной выше опции --object-streams, будет (насколько я могу судить) такой функцией:
void setObjectStreamMode(qpdf_object_stream_e);
из заголовочного файла c ++, который становится:
[DllImport("qpdf21.dll")]
static extern void _ZN10QPDFWriter19setObjectStreamModeE20qpdf_object_stream_e(int stateEnum);
в файле C #.
Проблема в том, что когда я использую вышеуказанную функцию, я получаю
AccessViolationException: попытка чтения или записи защищенной памяти
ошибка, из-за которой я думаю, что мне нужно каким-то образом создать объект QPDF, но я никогда не использовал объектно-ориентированные пинвоки, поэтому я не знаю, как сделать объект доступным в c #.
Если кто-то уже знаком с использованием dll в C # или даже в C ++ и может сказать мне правильные функции, которые необходимо вызвать для репликации команды, я был бы признателен за это!