在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文件都已经加入,为什么还会出现这样的错误呢??
不知道有谁能帮助解决一下!!!
...全文
705 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
  • 打赏
  • 举报
回复
好像和他出现的不是同一个问题耶!!!
内容概要:本文围绕永磁同步电机(PMSM)的速度控制,深入研究了基于矢量控制的Simulink仿真实现方法。通过建立PMSM的数学模型,结合Clarke和Park坐标变换,实现了对电机磁链与转矩的解耦控制,进而实现对转速的精确调节。文中系统阐述了矢量控制系统的核心架构,涵盖SVPWM调制模块、电流环与速度环PI控制器的设计原理,并在Simulink环境中搭建完整的闭环控制系统,通过不同负载与转速工况下的仿真实验,验证了该控制策略具备良好的动态响应能力和稳态精度。; 适合人群:具备电机控制理论基础和Simulink仿真操作经验的电气工程、自动化及相关专业的本科高年级学生、硕士研究生、科研人员,以及从事电机驱动系统开发的工程技术人员。; 使用场景及目标:①深入理解PMSM矢量控制的理论基础与实现机制;②掌握在Simulink中构建电机控制系统仿真模型的关键技术;③为实际工程应用中的高性能电机调速系统设计提供有效的仿真验证方案和技术参考;④作为高等院校相关课程的教学案例或毕业设计指导素材。; 阅读建议:建议读者结合电机学、电力电子技术和自动控制原理等基础知识进行学习,重点关注坐标变换的物理意义、PI控制器的参数整定方法以及SVPWM的生成逻辑,务必动手运行并调试所提供的仿真模型,通过改变参数观察系统响应,以深化对矢量控制动态性能的理解。

19,463

社区成员

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

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