使用 libdxf 的分段错误
Segmentation fault using 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
。
如何处理这个分段错误?
我希望你正在努力 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 headers,我怀疑存在兼容性问题(可能在 dxf headers 和共享的 object 文件之间)
如果您是 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 所在的位置。在您的环境中可能有所不同。
我正在尝试使用 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>
我通过包管理器在 Ubuntu 上安装了 libdxflib-dev 包(还有包含 libdxflib.so 的 libdxflib-2.5.0.0)。
它创建了一个空 'myfile.dxf' 并退出。
由于您从另一个目录包含 dxf headers,我怀疑存在兼容性问题(可能在 dxf headers 和共享的 object 文件之间)
如果您是 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 所在的位置。在您的环境中可能有所不同。