为了把raw图转成dicom图像 偶是跋山涉水啊 翻山越岭啊
找到一个老外们都在用的一个叫gdcm的东东 网上找到一个教程 一路照搬,稍微有点点小波折(注意就是要cmake一下 cmake会出现一些选项 和在windows下面一样 勾上能勾的选项) 然后倒算是顺利
接着就是开始直接使用gdcm写的一个命令 gdcmimg 看说明偶是热血沸腾啊 以为碰到了宝藏,念几遍芝麻开门就可以了,不想按照说明去做 就是生成不了dicom文件 dicom文件何其复杂,在说明中有一句话叫“the output is for secondary image” 死活没搞明白secondary image 是啥子东东
然后就开始想调试gdcmimg文件 这里 啊 我的天 我居然花了至少2个工作日 汗颜 就是因为g++用的不行
g++ 几个重要的选项(当然要注意看g++的帮助)
-S filepath 就能得到汇编文件 一般是.i 结尾
-c filepath 得到*.o 机器目标文件
-o outputfile 这里是输出文件 否则的话 他会默认输出为a.out 或者sourcefilename.i 等
-Ifilepath 就是include的那个目录 注意注意!! 这里的I和path之间不能有空格!!!
-Ldir 就是你要用到动态或者静态库 这个就是要搜索的目录(很好理解 和IDE类似) 注意 L和dir不能有空格!!!
-lmylib 就是在链接的时候 去链接libmylib.a这个静态库 注意哦 是libmylib.a 而不是mylib或者mylib.a
然后就开始用gdb
gdb 看看help 就大概能明白了
比如这个程序
叫helloworld
> gdb ./helloworld
> break helloworld.cc:main (在main函数入口设置断点)
>b 500 (表示在500行设置断点)
> r -i input.name -o output.name (run是可以带上这个程序的args的)
今天碰到的问题: 发现了写不了 是在gdcm::PixmapWriter::write()函数上头 所以我郁闷啊,就是我必须要整一个包含了源文件的编译,这样的话我岂不是要弄通makefile? 明天只有继续痛苦中