-
下载
进入dcmtk官网https://www.dcmtk.org/dcmtk.php.en,点击源码压缩包,发现无法下载,不知道是否是网络原因,但官方网页都可正常访问。于是到github上下载,一开始糊里糊涂下了个dcmtk_master,编译后使用发现不太稳定,各种报头文件内部变量无法识别的问题,最后下了个分支dcmtk3.6.4版本(https://github.com/DCMTK/dcmtk),测试正常(注意,github网页需要在fireFox浏览器上打开,才可以选择分支)
下载方式:(1)windows下载,然后通过Filezilla拖到linux系统下
(2)在linux下执行git https://github.com/DCMTK/dcmtk.git
-
安装cmake
yum -y install cmake -
编译DCMTK
(1)cd dcmtk-DCMTK-3.6.4/ /进入dcmtk解压文件夹
(2)mkdir build /新建build目录
(3)cd build 进入build目录
(4)ccmake … 执行ccmake … ,注意要加上上层目录路径
(5)按c键进入修改配置,修改完成后再按一次c键,然后按g键保存退出
BUILD_APPS OFF
BUILD_SHARED_LIBS ON
(6)make install 将编译生成的include和lib文件夹拷贝到/usr/local下 -
验证
新建new.cpp文件:
#include "dcmtk/ofstd/ofstream.h"
#include "dcmtk/dcmpstat/dvpsdef.h" /* for constants */
#include "dcmtk/dcmpstat/dviface.h" /* for DVInterface */
#include "dcmtk/ofstd/ofstring.h" /* for OFString */
#include "dcmtk/ofstd/ofbmanip.h" /* for OFBitmanipTemplate */
#include "dcmtk/ofstd/ofdatime.h" /* for OFDateTime */
#include "dcmtk/dcmdata/dcuid.h" /* for dcmtk version name */
#include "dcmtk/dcmdata/cmdlnarg.h" /* for prepareCmdLineArgs */
#include "dcmtk/ofstd/ofconapp.h" /* for OFConsoleApplication */
#include "dcmtk/dcmimgle/dcmimage.h"
#include "dcmtk/dcmpstat/dvpspr.h"
#include "dcmtk/dcmpstat/dvpssp.h"
#include "dcmtk/dcmpstat/dvpshlp.h" /* for class DVPSHelper */
#include "dcmtk/ofstd/ofstd.h"
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dctk.h"
#include "dcmtk/dcmdata/dcistrmf.h"
#include "dcmtk/dcmdata/libi2d/i2dbmps.h"
#include "dcmtk/dcmdata/dcpxitem.h"
#include "dcmtk/dcmjpeg/djdecode.h"
#include "dcmtk/dcmdata/dcvrfd.h"
#include "dcmtk/dcmjpeg/djencode.h"
#include "dcmtk/dcmjpeg/djrplol.h"
#include <iostream>
#include <string>
int main(int argc,char *argv[])
{
if(argc!=3){
std::cout << "illegal parameters" << std::endl;
return -1;
}
char* dcmPath= argv[1];
char* compressPath = argv[2];
DJDecoderRegistration::registerCodecs(); // register JPEG codecs
DcmFileFormat fileformat;
if (fileformat.loadFile(dcmPath).good())
{
DcmDataset *dataset = fileformat.getDataset();
// decompress data set if compressed
dataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL);
// check if everything went well
if (dataset->canWriteXfer(EXS_LittleEndianExplicit))
{
fileformat.saveFile(compressPath, EXS_LittleEndianExplicit);
}
}
DJDecoderRegistration::cleanup();
return 0 ;
}
编译
g++ new.cpp -DHAVE_CONFIG_H -I/usr/local/include -L/usr/local/lib/ -pthread -lcharls -lcmr -ldcmdata -ldcmdsig -ldcmfg -ldcmimage -ldcmimgle -ldcmiod -ldcmjpeg -ldcmjpls -ldcmnet -ldcmpmap -ldcmpstat -ldcmqrdb -ldcmrt -ldcmseg -ldcmsr -ldcmtls -ldcmtract -ldcmwlm -li2d -lijg12 -lijg16 -lijg8 -loflog -lofstd -o new
ACE编译过程
(1)ACE下载
http://download.dre.vanderbilt.edu/
注意,务必下载Full,不然没有GNUMakefile文件
(2)解压
tar xzvf ACE-6.5.6.tar.gz
(3)设置系统环境变量(CentOS7)
export ACE_ROOT=/root/makeProj/inatallpackage/ACE_wrappers
export LD_LIBRARY_PATH= A C E R O O T / l i b : ACE_ROOT/lib: ACEROOT/lib:LD_LIBRARY_PATH
(4)进入ACE解压目录下
cd ACE_wrappers/
(5)在ace目录下新建config.h文件,增加如下内容
#define ACE_HAS_EVENT_POLL
#define ACE_HAS_PTHREAD_SCHEDPARAM
#define ACE_HAS_PTHREADS_STD
#include “ace/config-linux.h”
(6)在 #ACE_ROOT/include/makeinclude/目录下创建:platform_macros.GNU,并在该文件中写入如下内容:
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
INSTALL_PREFIX=/usr/local/ACE(可以把 lib, include, share, 和 bin 输出到 INSTALL_PREFIX 目录下)
(7)在/ACE_wrappers目录下执行make
make
(8)在/ACE_wrappers目录下执行make install;
make install
备注: 该操作是把 lib, include, share, 和 bin 输出到 INSTALL_PREFIX 目录下。