c++ - 使用libdxf的分段错误

我正在尝试使用libdxf库。我创建了一个正在运行的小程序,但遇到了分段错误。我已经使用gdb调试了我的代码,并找到了导致内核转储的代码行。

我的代码段如下所示:

#include<iostream>
#include<../src/dl_dxf.h>
#include<../src/dl_creationadapter.h>
using namespace std;

class Test:public DL_CreationAdapter {
public:
  void write();
};

void Test::write(){
    DL_Dxf *dxf = new DL_Dxf();  // fault here
    DL_Codes::version exportVersion = DL_Codes::AC1015;
    DL_WriterA* dw = dxf->out("myfile.dxf", exportVersion);
    if (dw==NULL) {
        printf("Cannot open file 'myfile.dxf' \
                for writing.");
   }
   delete dxf;
}

int main(){
  Test test;
  test.write();  // fault here
  return 0;
}


分段错误的原因在上面两行中,并带有注释//fault here

如何处理这种分割错误?

最佳答案

希望您使用Linux。

我通过替换成功地编译了您的代码

 #include<../src/dl_dxf.h>
 #include<../src/dl_creationadapter.h>




#include<dxflib/dl_dxf.h>
#include<dxflib/dl_creationadapter.h>


我通过Ubuntu上的软件包管理器安装了libdxflib-dev软件包(还有包括libdxflib.so的libdxflib-2.5.0.0)。

它创建了一个空的“ myfile.dxf”并退出。

由于您包含了另一个目录中的dxf标头,因此我怀疑存在兼容性问题(可能在dxf标头和共享对象文件之间)

如果您是Ubuntu用户,则下面的代码通过使用standart软件包来编译程序可能有助于理解根本原因。

 sudo apt-get install libdxflib-dev libdxflib-2.5.0.0


替换为

#include<dxflib/dl_dxf.h>
#include<dxflib/dl_creationadapter.h>


然后用命令编译

 g++ -Wall dxf.cpp -ldxflib -L/usr/lib/x86_64-linux-gnu/


并运行

请注意,/ usr / lib / x86_64-linux-gnu /是libdxflib.so所在的位置。在您的环境中可能有所不同。

本文翻译自 https://stackoverflow.com/questions/32167170/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 c++ dxf


相关文章:

c++ - 如果QObject是从DIRECTLY派生的,使用*虚拟*多重继承是否安全?

c++ - 重载[]运算符和复制构造函数不起作用

c++ - 如何在Visual Studio 2008 Express中编译和链接最小的SDL程序?

c++ - 如何围绕特定原点旋转点?

python - 使用ezdxf删除DXF中的圆

c++ - 在Visual Studio中使用代码块代码

java - DXF文件INSERT实体

c# - 从unity3d导出cad格式

c# - 使用WPF ArcSegment绘制DXF Arc