使用libdxf进行分段错误

时间:2015-08-23 13:30:08

标签: c++ dxf

我正在尝试使用//301 Redirect Entire Directory RedirectMatch 301 /example(.*) /wiki/example/$1 库。我创建了一个小程序运行,我得到一个分段错误。我使用libdxf调试了我的代码,并找到了导致核心被转储的代码行。

我的代码段如下所示:

gdb

分段错误的来源在上面2行,注释为#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; }

如何处理此分段错误?

1 个答案:

答案 0 :(得分:2)

我希望你在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用户下面的行,通过使用标准包来编译程序可能有助于理解根本原因

 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/

并运行a.out

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