but when I change the code and add a line with "DicomImage ("test.dcm")" i've got some errors.#include <stdio.h>
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dctk.h"
#include "dcmtk/dcmimage/diregist.h" /* include to support color images */
#include "dcmtk/dcmimgle/dcmimage.h" /* for DicomImage */
using namespace std;
//using namespace cimg_library;
int main(int argc, char *argv[]) {
//Clase que maneja los archivos (cabeceras + datos)
DcmFileFormat FileFormat;
//abrimos el archivo y guardamos el estado de la apertura
OFCondition status = FileFormat.loadFile("test3.dcm");
if (status.good())
{
const Uint16 * pixelData = NULL;
Uint16 lRows = 0;
Uint16 lCols = 0;
//clase que maneja los datos (valores de los pixeles)
DcmDataset *lDataset = FileFormat.getDataset();
//leemos atributos (pixeldata, lrows, lcols);
lDataset->findAndGetUint16Array(DCM_PixelData, pixelData);
lDataset->findAndGetUint16(DCM_Rows, lRows);
lDataset->findAndGetUint16(DCM_Columns, lCols);
cout<< lCols*lRows;
} else
cerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl;
return 0;
}
This is the final code:
this is the message:#include <stdio.h>
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dctk.h"
#include "dcmtk/dcmimage/diregist.h" /* include to support color images */
#include "dcmtk/dcmimgle/dcmimage.h" /* for DicomImage */
using namespace std;
//using namespace cimg_library;
int main(int argc, char *argv[]) {
//Clase que maneja los archivos (cabeceras + datos)
DcmFileFormat FileFormat;
DicomImage ("test.dcm");
//abrimos el archivo y guardamos el estado de la apertura
OFCondition status = FileFormat.loadFile("test3.dcm");
if (status.good())
{
const Uint16 * pixelData = NULL;
Uint16 lRows = 0;
Uint16 lCols = 0;
//clase que maneja los datos (valores de los pixeles)
DcmDataset *lDataset = FileFormat.getDataset();
//leemos atributos (pixeldata, lrows, lcols);
lDataset->findAndGetUint16Array(DCM_PixelData, pixelData);
lDataset->findAndGetUint16(DCM_Rows, lRows);
lDataset->findAndGetUint16(DCM_Columns, lCols);
cout<< lCols*lRows;
} else
cerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl;
return 0;
}
/usr/local/include/dcmtk/dcmimage/diregist.h:90: error: undefined reference to 'DiRegister::DiRegister()'
/usr/local/include/dcmtk/dcmimage/diregist.h:90: error: undefined reference to 'DiRegister::~DiRegister()'
and this is my MakeFile
GPP=g++
GCC=gcc
FLAGS= -fshow-column -g2 -Wall -O0 -Wall -pedantic-errors -DHAVE_CONFIG_H -O0 -D_DEBUG
LIBS= -L/usr/local/lib -L/usr/local/include -ldcmimgle -ldcmdata -loflog -lofstd -lz -lpthread -lm -lX11
OBJS=Debug/main.o
all: Debug Debug/ImgDicom.bin
clean:
rm -rf ${OBJS} Debug/ImgDicom.bin
Debug/ImgDicom.bin: ${OBJS}
${GPP} ${OBJS} ${LIBS} -o $@
Debug:
mkdir Debug
Debug/main.o: main.cpp CImg.h
${GPP} ${FLAGS} -c main.cpp -o $@
Can anyone help me?
Thanks!
EDIT: It works if i supress the header #include "dcmtk/dcmimage/diregist.h"