Я пытаюсь использовать 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
,
Как справиться с этой ошибкой сегментации?
Я желаю, чтобы вы работали на 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. Это может отличаться в вашей среде.