Aspose.PDF触发断点

时间:2019-04-04 12:49:17

标签: c++ windows visual-studio-2017 aspose aspose.pdf

我在我们公司现有的应用程序中实现了 Aspose.Cells Aspose.PDF 。 虽然我对此有一些麻烦(主要是因为我试图将两个API都实现到exat同一文件中,但这不是一个好主意) 我想出了使它或多或少起作用的方法。

我的问题是 Aspose.Cells 正常运行,并且似乎没有任何异常行为 Aspose.PDF 已经在设置许可证方面遇到困难,即使我最终使它起作用,甚至无法启动 Aspose :: Pdf :: Document

因此,第一个完全不寻常的事情是我必须在Aspose软件包随附的示例代码中以及在官方资源中设置许可证的方式设置许可证。

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

此代码无法在我的计算机上运行并导致错误。

粗略翻译

  

food.exe触发了一个断点

原始

  

food.exe帽子由艾伦·哈尔特蓬克(Easten Haltepunkt)设计

当我用这样的空构造函数初始化 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>();
.....
.....
}

我实际上不知道发生了什么。我目前不使用任何 using namespace 命令。 如果有人知道如何解决这个问题,那就太好了。

编辑: 该错误完全发生在以下函数的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:

Here,您将找到一个简单的示例来说明我的代码的一般外观。 我开始在程序中实现 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 :(得分: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();