Ошибка сегментации с использованием 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;
}

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

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

0

Решение

Я желаю, чтобы вы работали на 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 ниже строк для компиляции программы с помощью стандартных пакетов, может быть полезно понять основную причину

 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. Это может отличаться в вашей среде.

2

Другие решения


По вопросам рекламы [email protected]