您的位置:首页 > 其它

关于 VC 2005编译DCMTK的问题

2009-03-05 21:22 489 查看
我从 dcmtk 官方网站上下载了以下rar文件 :
dcmtk-3.5.4
dcmtk-3.5.4-win32-i386
dcmtk-3.5.4-win32-i386-md-support
dcmtk-3.5.4-win32-i386-tls

依次按照以下步骤操作:

第一步:将dcmtk-3.5.4 解压缩为:J:/DCMTK-3.5.4/ DCMTK-3.5.4
第二步:将 dcmtk-3.5.4-win32-i386 下的文件夹 :



拷贝到:J:/DCMTK-3.5.4/ 下

第三步:将dcmtk-3.5.4-win32-i386-md-support下的文件夹 :



拷贝到:J:/DCMTK-3.5.4/ 下

第四步:将dcmtk-3.5.4-win32-i386-md-support下的文件夹 :



拷贝到:J:/DCMTK-3.5.4/ 下

第五步:根据:dcmtk-3.5.4-win32-i386-md-support 中的提示:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////// OFFIS_README.txt ///////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
To use DCMTK with the /MD flag, you need the support libraries to be built with that flag as well.
Each folder contains a README with instructions (except libxml and openssl, which I did not rebuild).

Additionally, the jpeg_6 project needs to be rebuilt as follows:
- rename jconfig.vc to jconfig.h
- edit makefile.vc to add "-MD" to the CFLAGS
- run "nmake /f makefile.vc"
- rename "jpeg.lib" to "libjpeg.lib"

To build the DCMTK project:
- Edit CMakeLists.txt: Find "# settings for MS Visual C++", and subsection "Visual Studio 8 2005"; change "/MT" to "/MD" and "/MTd" to "/MDd"
- Update the folder paths for the support libraries
- Follow instructions for building for DevStudio
- Note that the ijg* projects don't pick up the /MD change - need to change them manually.
- Build the INSTALL project

Best of luck
Dennis Balance
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
将 CMakeLists.txt 中相关的部分改为如下内容:

# settings for Microsoft Visual C
IF(CMAKE_C_COMPILER MATCHES cl)
IF(NOT WITH_SHARED_LIBS)
IF(CMAKE_GENERATOR STREQUAL "Visual Studio 6")
SET(CMAKE_C_FLAGS "/nologo /W3 /GX /Gy /YX")
SET(CMAKE_C_FLAGS_DEBUG "/MDd /Z7 /Od")
SET(CMAKE_C_FLAGS_RELEASE "/MD /O2")
SET(CMAKE_C_FLAGS_MINSIZEREL "/MD /O2")
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/MDd /Z7 /Od")
ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 6")
IF(CMAKE_GENERATOR STREQUAL "Visual Studio 7" OR CMAKE_GENERATOR STREQUAL "Visual Studio 7 .NET 2003")
SET(CMAKE_C_FLAGS "/nologo /W3 /Gy")
SET(CMAKE_C_FLAGS_DEBUG "/MDd /Z7 /Od")
SET(CMAKE_C_FLAGS_RELEASE "/MD /O2")
SET(CMAKE_C_FLAGS_MINSIZEREL "/MD /O2")
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/MDd /Z7 /Od")
ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 7" OR CMAKE_GENERATOR STREQUAL "Visual Studio 7 .NET 2003")
IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
SET(CMAKE_C_FLAGS "/nologo /W3 /Gy")
SET(CMAKE_C_FLAGS_DEBUG "/MDd /Z7 /Od")
SET(CMAKE_C_FLAGS_RELEASE "/MD /O2")
SET(CMAKE_C_FLAGS_MINSIZEREL "/MD /O2")
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/MDd /Z7 /Od")
ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
ENDIF(NOT WITH_SHARED_LIBS)
ENDIF(CMAKE_C_COMPILER MATCHES cl)

# settings for Microsoft Visual C++
IF(CMAKE_CXX_COMPILER MATCHES cl)
IF(NOT WITH_SHARED_LIBS)
IF(CMAKE_GENERATOR STREQUAL "Visual Studio 6")
SET(CMAKE_CXX_FLAGS "/nologo /W3 /GX /Gy /YX")
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd /Z7 /Od")
SET(CMAKE_CXX_FLAGS_RELEASE "/MD /O2")
SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MD /O2")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MDd /Z7 /Od")
ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 6")
IF(CMAKE_GENERATOR STREQUAL "Visual Studio 7" OR CMAKE_GENERATOR STREQUAL "Visual Studio 7 .NET 2003")
SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy")
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd /Z7 /Od")
SET(CMAKE_CXX_FLAGS_RELEASE "/MD /O2")
SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MD /O2")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MDd /Z7 /Od")
ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 7" OR CMAKE_GENERATOR STREQUAL "Visual Studio 7 .NET 2003")
IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy")
SET(CMAKE_CXX_FLAGS_DEBUG "/MDd /Z7 /Od")
SET(CMAKE_CXX_FLAGS_RELEASE "/MD /O2")
SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MD /O2")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MDd /Z7 /Od")
ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
ENDIF(NOT WITH_SHARED_LIBS)
ENDIF(CMAKE_CXX_COMPILER MATCHES cl)

第六步:使用Cmake 2.6 :如下图:



图 1

点击 “Configure” 按钮:
出现如下对话框: 选择 :Visual Studio 8 2005 点击 “OK”按钮



图 2

各参数如下:



图3



图 4
其中修改的参数如下 :
INSTALL_PREFIX
set:” J:/dcmtk-3.5.4”
libpng support:
set "WITH_LIBPNG" to "ON" and
set "WITH_LIBPNGINC" e.g. to " J:/dcmtk-3.5.4/libpng-1.2.8 "
libtiff support:
set "WITH_LIBTIFF" to "ON" and
set "WITH_LIBTIFFINC" e.g. to " J:/dcmtk-3.5.4/tiff-3.8.2 "
OpenSSL support:
set "WITH_OPENSSL" to "ON" and
set "WITH_OPENSSLINC" e.g. to " J:/dcmtk-3.5.4/openssl-0.9.8a "
zlib support:
set "WITH_ZLIB" to "ON" and
set "WITH_ZLIBINC" e.g. to " J:/dcmtk-3.5.4/zlib-1.2.3 "

点击 “Configure” 按钮:



图 5

点击“OK”按钮出现如下警告:



图 6

第七步:使用VC 2005 打开 dcmtk. :如下图:



图 7

设置 All_Buder 为启动项:



图 8

编译该工程;

系统出现 错误:



错误 6 error LNK2005: __decode_pointer 已经在 MSVCRTD.lib(MSVCR80D.dll) 中定义 LIBCMTD.lib

请问我以上的操作步骤是否有什么地方遗漏或者 错误 ,该如何操作,

出现
“error LNK2005: __decode_pointer 已经在 MSVCRTD.lib(MSVCR80D.dll) 中定义 LIBCMTD.lib ”

这样的错误该如何解决?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: