在win32下使用itk出现问题

carus 2008-10-04 11:15:23

配置正常完成,在工程中添加了itk的.h和.lib文件,
在工程未添加itk相关方法的时候编译连接通过
但是在加入一些代码后就出现在一些问题了,加入的代码如下:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
typedef unsigned short PixelType;
const unsigned int Deminsion = 2;

typedef itk::Image<PixelType,Deminsion> ImageType;
typedef itk::ImageFileReader<ImageType> ReaderType;
typedef itk::ImageFileWriter<ImageType> WriterType;

ReaderType::Pointer reader = ReaderType::New();
WriterType::Pointer writer = WriterType::New();


CImage imgBase;
CImage imgInput;

char* pszFileName ="mr256.jpg";
bool flag = imgBase.Load((CString)pszFileName);

if (flag == false)
{
return 0;
}

reader->SetFileName(pszFileName);

writer->SetInput( reader->GetOutput() );

try
{
writer->Update();
}
catch( itk::ExceptionObject & err )
{
std::cerr << "ExceptionObject caught !" << std::endl;
std::cerr << err << std::endl;
return 0;
}
return 0;
}

连接时出现错误,如下:
1> 正在创建库 D:\VC\ItkWin32\Debug\ItkWin32.lib 和对象 D:\VC\ItkWin32\Debug\ItkWin32.exp
1>itkgdcm.lib(gdcmUtil.obj) : error LNK2019: 无法解析的外部符号 _SnmpUtilVarBindFree@4,该符号在函数 "int __cdecl gdcm::GetMacAddrSys(unsigned char *)" (?GetMacAddrSys@gdcm@@YAHPAE@Z) 中被引用
1>itkgdcm.lib(gdcmUtil.obj) : error LNK2019: 无法解析的外部符号 _SnmpUtilOidNCmp@12,该符号在函数 "int __cdecl gdcm::GetMacAddrSys(unsigned char *)" (?GetMacAddrSys@gdcm@@YAHPAE@Z) 中被引用
1>itkgdcm.lib(gdcmUtil.obj) : error LNK2019: 无法解析的外部符号 _SnmpUtilOidCpy@8,该符号在函数 "int __cdecl gdcm::GetMacAddrSys(unsigned char *)" (?GetMacAddrSys@gdcm@@YAHPAE@Z) 中被引用
1>itkgdcm.lib(gdcmUtil.obj) : error LNK2019: 无法解析的外部符号 __imp__UuidCreate@4,该符号在函数 "private: static bool __cdecl gdcm::Util::GenerateUUID(unsigned char *)" (?GenerateUUID@Util@gdcm@@CA_NPAE@Z) 中被引用
1>D:\VC\ItkWin32\Debug\ItkWin32.exe : fatal error LNK1120: 4 个无法解析的外部命令
1>Build log was saved at "file://d:\VC\ItkWin32\ItkWin32\Debug\BuildLog.htm"
1>ItkWin32 - 5 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

既然.lib文件都已经加入,为什么还会出现这样的错误呢??
不知道有谁能帮助解决一下!!!
...全文
588 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
golddreamok 2012-06-17
  • 打赏
  • 举报
回复
error LNK2019: 无法解析的外部符号 _SnmpUtilVarBindFree@4,该符号在函数 "int __cdecl gdcm::GetMacAddrSys(unsigne
d char *) " (?GetMacAddrSys@gdcm@@YAHPAE@Z) 中被引用
有很多类似于这样的问题,这个问题是因为需要加入另外三个链接库:snmpapi.lib, rpcrt4.lib, wsock32.lib 。这三个库来自于Windo
ws SDK。我猜测应该itk中的链接库有一些涉及到了这三个库吧!
JOJOW123 2011-07-07
  • 打赏
  • 举报
回复
我不是很明白,这里加进去的lib文件应该就是itk编译产生的所有lib文件,每个人在用Cmake生成itk时选项填写不同,生成的lib文件就不同,所以这里每个人输入的lib文件名字不太一样吧!
carus 2008-10-09
  • 打赏
  • 举报
回复
错误解决!!!
有两种方法:
1.把你的linker->input->addtional dependencies修改为
$(NOINHERIT) kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib ITKBasicFilters.lib ITKCommon.lib ITKIO.lib ITKAlgorithms.lib itkgdcm.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib ITKNumerics.lib ITKNrrdIO.lib itkjpeg12.lib itkjpeg16.lib itkopenjpeg.lib snmpapi.lib rpcrt4.lib itkpng.lib itktiff.lib itkjpeg8.lib ITKSpatialObject.lib ITKMetaIO.lib comctl32.lib wsock32.lib ITKDICOMParser.lib ITKEXPAT.lib ITKniftiio.lib ITKznz.lib itkzlib.lib itkvnl_inst.lib itkvnl_algo.lib itkvnl.lib itkv3p_netlib.lib itkvcl.lib itksys.lib ws2_32.lib itkgdcm.lib ITKStatistics.lib itkjpeg12.lib itkjpeg16.lib itkopenjpeg.lib snmpapi.lib rpcrt4.lib itkjpeg8.lib ITKCommon.lib wsock32.lib itkvnl_inst.lib itkvnl_algo.lib itkvnl.lib itkv3p_netlib.lib itkvcl.lib itksys.lib ws2_32.lib

方法二
可以采用cmake

CMakeLists.txt文件如下(把其中的HelloWorld用你的工程名字取代即可):

PROJECT(HelloWorld)

FIND_PACKAGE (ITK)
IF(ITK_FOUND)
INCLUDE(${USE_ITK_FILE})
ENDIF(ITK_FOUND)

INCLUDE_DIRECTORIES(${myProject_SOURCE_DIR})

ADD_EXECUTABLE(HelloWorld HelloWorld.cxx)

TARGET_LINK_LIBRARIES (HelloWorld ITKBasicFilters ITKCommon ITKIO ITKAlgorithms itkgdcm.lib kernel32 user32 gdi32 winspool shell32 ole32 oleaut32 uuid comdlg32 advapi32 ITKNumerics ITKNrrdIO itkjpeg12 itkjpeg16 itkopenjpeg snmpapi rpcrt4 itkpng itktiff itkjpeg8 ITKSpatialObject ITKMetaIO comctl32 wsock32 ITKDICOMParser ITKEXPAT ITKniftiio ITKznz itkzlib itkvnl_inst itkvnl_algo itkvnl itkv3p_netlib itkvcl itksys ws2_32)

问题产生的原因:
添加的lib文件之间产生了冲突,或者是有相关的系统的lib文件没有添加
今后可以参考itk的例子程序所引用的lib 来配置自己的程序来避免这个问题
或者使用cmake配置环境


注:本问题由joewan在 http://www.nsooo.com/supesite/ 解决!!在此表示感谢!!
carus 2008-10-04
  • 打赏
  • 举报
回复
在哪个怗子上的啊??给个链接吧!!!
视图猿人 2008-10-04
  • 打赏
  • 举报
回复
前面的帖子说了
可能是ide的问题
你自己再看看
carus 2008-10-04
  • 打赏
  • 举报
回复
好像和他出现的不是同一个问题耶!!!

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧