Я внедрил 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