我在我们公司现有的应用程序中实现了Aspose.Cells和Aspose.PDF。虽然我在这方面遇到了一些麻烦(主要是因为我试图将两个API都实现到exat相同的文件中,这是个坏主意),但我想出了如何使它或多或少地工作。
我现在的问题是,虽然Aspose.Cells工作得非常好,而且似乎没有什么不寻常的行为,但Aspose.PDF已经在设置许可证方面遇到了困难,甚至当我最终使它开始工作时,我甚至都无法启动一个Aspose.Cells
因此,第一件完全不寻常的事情是,我必须在Aspose包提供的示例代码中设置许可证,在官方资源中,许可证设置如下。
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
当我用像这样的emtpy构造函数初始化一个系统::String时,也会发生同样的情况。
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,所以我编辑了我的附加库目录、附加依赖项、附加包含目录、预preprozessor定义和堆栈大小,以适应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
发布于 2019-04-04 15:13:52
我从未听说过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();
https://stackoverflow.com/questions/55516429
复制相似问题