2015-08-23 4 views
0

Я пытаюсь использовать библиотеку libdxf. Я создал небольшую программу, в которой я получаю ошибку сегментации. Я отлаживал свой код с помощью gdb и нашел код, вызывающий сброс ядра.Ошибка сегментации с использованием libdxf

Мой фрагмент кода, как написано ниже:

#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; 
} 

Источник ошибки сегментации в 2 строки выше с комментарием //fault here.

Как справиться с этой ошибкой сегментации?

+0

Вы справляетесь с этим, исправляя ошибку. Извините, но ваш вопрос совершенно бесполезен, потому что код, вызывающий ошибку, не включен. Ваш код вызова не имеет значения (и он даже не минимальный, как требуется в соответствии с рекомендациями). Тем не менее, какую версию этой библиотеки вы используете и каков ее URL? Вы должны упомянуть их, потому что это не такая библиотека, как Boost или Qt, которые известны большинству программистов на C++. –

ответ

2

Желаю вам работы с Linux.

Я составил свой код побежал успешно, просто заменив

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

с

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

Я установил пакет libdxflib-Dev с помощью менеджера пакетов в Ubuntu (а также libdxflib-2.5.0.0, которая включает в себя libdxflib.so).

Он создал пустой файл 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/ 

и запустить a.out

Обратите внимание, что/USR/Lib/x86_64-Linux-гну/есть где libdxflib.so стоит. В вашей среде это может быть другим.

 Смежные вопросы

  • Нет связанных вопросов^_^