我写了一个程序,原来是Use MFC in a Share DLL ,但是最后程序在没有VC的机器上运行不了,我把它改成静态链接时出现以下错误: 
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fclose already defined in libcmtd.lib(fclose.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fflush already defined in libcmtd.lib(fflush.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _free already defined in libcmtd.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _malloc already defined in libcmtd.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _floor already defined in libcmtd.lib(floor.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _calloc already defined in libcmtd.lib(dbgheap.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: __mbsnbcpy already defined in libcmtd.lib(mbsnbcpy.obj)
MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _sprintf already defined in libcmtd.lib(sprintf.obj)
29errors
我在Setting中Ignor掉libcmtd.lib后,出现如下11处错误,,,Linking...
   Creating library Debug/Interface.lib and object Debug/Interface.exp
nafxcwd.lib(dcprev.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(oledlgs1.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(olelink.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(dcmeta.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(viewedit.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
Debug/Interface.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.Interface.exe - 11 error(s), 0 warning(s)
请高手指教,什么原因。 

解决方案 »

  1.   

    如果程序使用了MFC类库等信息,在一个没有安装vc环境的计算机上运行,如果不出错,那证明操作系统肯定有
    问题了,所以呀,这个很正常,需要把vc中使用的dll文件拷贝到system32下,或者设置在环境变量中,也
    可以在程序的目录中,至于说缺什么DLL,需要什么DLL,可以使用SKY++工具看看
      

  2.   

    改回去,只在工程选项去掉  /D "_AFXDLL" 
      

  3.   

    谢谢楼上二位,问题我已经解决了!我还是把它设置为动态的,把需要的dll打包放在目标机器的system32下面。开始的时候出来无法定位序数...于MFC42.dll,可能是dll版本不对(那个是我在dll.com上面下载的,估计他们没有更新),然后我将我电脑上的MFC42.dll拷贝到目标机器的system32里面,运行,就ok了
      

  4.   

    你好!我和你遇到一样的错误。
    我看了你们说的以后还是不太明白到底要怎么解决这个问题……
       “将我电脑上的MFC42.dll拷贝到目标机器的system32里面”?这是什么意思。
    我电脑安装了VC++6.0.
    这个问题烦恼了我一个下午了,还请帮忙!谢谢!