Aspose.PDF触发断点

问题描述 投票:0回答:1

我将Aspose.Cells和Aspose.PDF实现到我们公司现有的应用程序中。虽然我遇到了一些麻烦(主要是因为我试图将两个API都实现在exat同一个文件中,这是一个坏主意)我想出了如何使其工作或多或少。

我的问题现在是Aspose.Cells工作得非常好并且似乎没有任何异常行为Aspose.PDF已经在设置许可证方面遇到困难,即使我最终让这个工作起来我甚至无法启动Aspose :: Pdf ::文献。

因此,第一个完全不同寻常的事情是我必须在Aspose Package给出的示例代码中设置许可证,在官方资源中,许可证设置如下。

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

此代码不会在我的机器上运行并导致错误。

粗糙的翻译

food.exe触发了一个断点

原版的

food.exe已触发断点

当我使用像这样的空构造函数初始化System :: 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)...);“导致”错误或至少在这里错误将被触发。

Aaditi:

Here你会发现一个简单的例子,说明我的代码看起来如何。我开始将Aspose.Pdf实现到我的Programm中,因此我编辑了我的附加库目录,其他依赖项,其他包含目录,preprozessor定义和我的stacksize以适应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

其他Includedirectories

 ...
    ..\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
c++ windows visual-studio-2017 aspose aspose.pdf
1个回答
0
投票

我从来没有听说过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();
© www.soinside.com 2019 - 2024. All rights reserved.