解决:error LNK2001: unresolved external symbol _Netbios@4

  (1)对于单文档工程,运行时提示:

       generated debug assertion

       if (!ProcessShellCommand(cmdInfo))

       return FALSE;

       -- File: docsingl.cpp

       Line: 215

原因:缺少AFX_IDS_UNTITLED的字符串

解决:在资源文件的STRING TABLE中加入 ID= AFX_IDS_UNTITLED的键值。

       (2)编辑时提示:

fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds

原因:

解决:在Project->Settings->Preprocessor definitions中去掉 _AFXDLL项。

       (3)编译时提示:

LIBCMTD.lib(dbgheap.obj):error LNK2005: _malloc already defined in msvcrtd.lib(MSVCRTD.dll)

原因:由于VC在编译时试图从两个不同的库中写入同一个函数代码,只要忽略这些相冲突的默认库就可以解决。

解决:在Project->Settings->Link->Category->Input—>Ignore Liberies中加入

相应的msvcprtd.lib,msvcrtd.lib等。

另一种解决:保证自己的编译环境为:

       A)project->settings->c/c++->category->code generation的use run-time library 为debug multithreaded.

       B) 在Project->Settings->Preprocessor definitions中去掉 _AFXDLL项。

       C)如果需要,在资源文件的STRING TABLE中加入 ID= AFX_IDS_UNTITLED的键值。

       D)这样就不需要忽略那些库了。

还有可以:

后来尝试了很多方法,经过摸索,最后得出解决方法:

在Preprocessor中定义_AFXDLL

如果它提示:fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds

就这样改:

C/C++->Code Generation->Multithread DLL (即实现/MD选项)

       (4)编译时提示:

dcmdata.lib(dcuid.obj) : error LNK2001: unresolved external symbol _Netbios@4

原因:缺少所需的链接库文件

解决:在自己的工程中加入需要使用的DCMTK静态库和头文件,并注意顺序。

       (5)编译时提示:

fatal error LNK1181: cannot open input file。。。。。。。 Debug.obj

原因:类似错误,可能是由于目录中含有太长的中文名字。

解决:可以将中文的目录名改为英文就OK

       (6)运行时提示:


原因:

解决:在Project->Settings->Preprocessor definitions中去掉 _AFXDLL项。

       (7)如果将已经make好的dcmtk目录复制到其它目录,则需要重新make,否则会出现一大堆路径错误

四、一个实际的例子

       我们经常使用的DICOM主要是读和写DICOM文件。下面以读写DICOM为例DCMTK的使用方法。

五、其它一些相关的问题

       1、把DCMTK当作静态库使用:DCMTK本身提供的是静态库即Lib,在链接进自己的工程时会将全部的函数加入,因此造成可执行文件很大,而且不便于升级;如果需要使用DCMTK作为动态库链接,需要自己建立相应的Dll工程,然后把原来的程序文件加进来,再写一个导出函数的文件,这些导出函数保持固定。这样其它地方使用的时候不会因为动态库程序升级又重新编译。

http://hi.baidu.com/%D5%D0%B7%E2/blog/item/eaa5e9eda37453252cf53408.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值