- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解决项目中引用dcmtk编译release版本时出现的问题
release版本下编译报错:unresolved external symbol __invalid_parameter_noinfo
原因:由于引用的dcmtk库的版本不对,可能在release版本下引用了dcmtk的debug版本库;
解决方法:将Tools-Options中的Library files中指向dcmtk库文件的路径都删除,如图1,并且在项目属性-Linker-General的Additional Library Directories中添加dcmtk的release版本库文件路径(记得在debug版本编译时也需要指定dcmtk的debug版本库文件路径),例如图2:
图1
图2
继续编译,如果还是出现此错误,可能是dcmtk开发包中各项目的运行时库和本程序的运行时库设置不对,解决方法:
1)在dcmtk开发包源码工程中release版本下对各项目设置运行时库为/MTd,设置方法如下,所有项目设置完成后再编译ALL_BIULD项目:
图3
2)在第1)步完成后,生成了/MTd模式下的dcmnet.lib等库文件,再在本程序(使用DCMTK库文件的程序)中设置运行时库为/MTd:
图4
如果报错: unresolved external symbol __security_check_cookie,则可以如图4所示设置C/C++-Code Generation-Buffer Security Check的值为No(/GS-),就是不检查内存溢出,如果要检查内存溢出,则需要增加一个支持库bufferoverflowU.lib,这个库可以在网上下载,我放在E:\DCMTK\lib3.6\release下,即和dcmtk的库文件放一起,可以不再设置另外的库路径就可以找到它:
图5
3. 如果报错:unresolved external symbol wmain referenced in function mainWCRTStartup
解决方法:Link Advanced entry-point ?改为WinMainCRTStartup:
图6
如果报错大体如下:LIBCMT.lib(crt0init.obj) : error LNK2005: _sprintf_s 已经在 msvcrtd.lib(MSVCR80D.dll) 中定义LIBCMT.lib库和其它库冲突造成的,可以在Linker-Input –Ignore Specific Library中忽略这个Libcmt.lib库:
图7
或者在引用dcmtk库的地方加上:#pragma comment(linker,/NOD:LIBCMT):
文档评论(0)