Aspose.PDF Триггеры Точка останова - PullRequest
0 голосов
/ 04 апреля 2019

Я внедрил Aspose.Cells и Aspose.PDF в существующие приложения наших компаний. Хотя у меня были некоторые проблемы с этим (в основном из-за того, что я пытался внедрить оба API в exat-файл, что было плохой идеей) Я понял, как заставить его работать более или менее.

Моя проблема сейчас в то время как Aspose.Cells работает отлично и, кажется, не имеет никакого необычного поведения Aspose.PDF уже борется с установкой лицензии и даже когда я в конечном итоге заставил это работать, я даже не могу инициировать Aspose :: Pdf :: Document .

Итак, первая совершенно необычная вещь - это то, как я должен был установить Лицензию в примере кода, который предоставляется вместе с Aspose Package, и на официальных ресурсах лицензия установлена ​​следующим образом.

auto lic = System::MakeObject<Aspose::Pdf::License>();
lic->SetlLicense("c:\\Foo\fooproj\\Aspose.Total.C++.lic");

Этот код не запускается на моем компьютере и не вызывает ошибку.

Грубый перевод

food.exe вызвал точку останова

Оригинал

food.exe Hat einen Haltepunkt ausgelöst

То же самое происходит, когда я инициализирую System :: String с помощью конструктора emtpy следующим образом.

 auto lic = System::MakeObject<Aspose::Pdf::License>();
 System::String str;
 str.FromUtf8("C:\\foo\fooproj\\Aspose.Total.C++.lic");
 lic->SetLicense(str);

НО, если я инициализирую System :: String с пустой строкой во-первых, установка лицензии, кажется, работает нормально, так что это работает.

 auto lic = System::MakeObject<Aspose::Pdf::License>();
 System::String str(u"");
 str.FromUtf8("C:\\Projekte\\Aspose\\Lizens\\Aspose.Total.C++.lic");
 lic->SetLicense(str);

Если приведенный выше код работает и я пытаюсь создать объект из Aspose :: Pdf :: Document , это приведет к сбою.

void Aspose_pdf::helloWorld()
{
  auto doc = System::MakeObject<Aspose::Pdf::Document>();
.....
.....
}

На самом деле я понятия не имею, что происходит. В настоящее время я не использую с использованием команд пространства имен. Было бы здорово, если бы у кого-то была идея, как это исправить.

Изменить: Ошибка происходит точно в smart_ptr.h в следующей функции.

typename std::enable_if<!IsSmartPtr<T>::value, SmartPtr<T> >::type  MakeObject(Args&&... args)
{
    System::Detail::OwnNextObject ownershipSentry;
    T *const object = ::new T(std::forward<Args>(args)...);
    ownershipSentry.CreatedSuccessfully(object);
    return SmartPtr<T>(object);
}

во второй строке, так что T *const object = ::new T(std::forward<Args>(args)...); «вызывает» ошибку или, по крайней мере, здесь ошибка не будет вызвана.

Edit2:

Здесь вы найдете простой пример того, как мой код выглядит в целом. Я начал с реализации Aspose.Pdf в моей Программе, поэтому я отредактировал мой Дополнительные каталоги Библиотеки, дополнительные зависимости, дополнительные каталоги включения, определения препроцессора и мой размер стека для соответствия этим настройкам, приведенным в примерах Aspose.Pdf . После этого я создал свой класс Aspose_Pdf и протестировал его. до сих пор работал безупречно. После этого я сделал те же правки, чтобы соответствовать Aspose.Cells . Также я создал класс Aspose_Cells и протестировал его. Хотя теперь это работало, мой Aspose_Pdf класс перестал работать. Через некоторое время мне удалось хотя бы получить активацию лицензии для Aspose_Pdf , чтобы работать с этого момента у меня были проблемы, описанные выше.

Дополнительные зависимости:

   ...
    Aspose.PDF_vc141x64d.lib
    aspose_cpp_vc141x64d.lib
    Aspose.Cells.lib

Дополнительные каталоги библиотек:

   ...
    ..\Aspose\Aspose.PDF\lib\Debug
    ..\Aspose\Aspose.Cells\lib64

дополнительные каталоги

 ...
    ..\Aspose\Aspose.PDF\lib\Debug
    ..\Aspose\Aspose.PDF\include\asposecpplib
    ..\Aspose\Aspose.PDF\include\Aspose.Pdf.Cpp
    ..\Aspose\Aspose.Cells\Include
    ..\Aspose\Aspose.Cells\Include\icu\include
    ..\Aspose\Aspose.Cells\Include\boost

1 Ответ

0 голосов
/ 04 апреля 2019

Я никогда не слышал о Aspose.Pdf , и я не знаю, как работает System::MakeObject<. Но для меня это выглядит так, что весь код может быть упрощен до следующего:

Aspose::Pdf::License^ lic = gcnew Aspose::Pdf::License();
System::String^ str = "C:\\foo\\fooproj\\Aspose.Total.C++.lic";
lic->SetLicense(str);

Когда дело доходит до Pdf.Document, инициализация может выглядеть следующим образом:

Aspose::Pdf::Document^ doc = gcnew Aspose::Pdf::Document();
...