我在MFC环境下,想通过DirectShow SDK来读取摄像头数据,程序编译都通过了,但是在链接时出现以下错误:
Linking...
LIBCMTD.lib(fpinit.obj) : error LNK2005: __ldused already defined in a previous module
LIBCMTD.lib(fpinit.obj) : error LNK2005: __fltused already defined in a previous module
LIBCMTD.lib(dbgheap.obj) : error LNK2005: _malloc already defined in msvcrt.lib(MSVCRT.dll)
LIBCMTD.lib(dbgheap.obj) : error LNK2005: _free already defined in msvcrt.lib(MSVCRT.dll)
LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrt.lib(MSVCRT.dll)
LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit already defined in msvcrt.lib(MSVCRT.dll)
LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in msvcrt.lib(cinitexe.obj)
LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrt.lib(cinitexe.obj)
LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in msvcrt.lib(cinitexe.obj)
LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in msvcrt.lib(cinitexe.obj)
LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in msvcrt.lib(MSVCRT.dll)
msvcrt.lib(MSVCRT.dll) : error LNK2005: __setmbcp already defined in LIBCMTD.lib(mbctype.obj)
LINK : warning LNK4098: defaultlib "msvcrt.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib "LIBCMTD" conflicts with use of other libs; use /NODEFAULTLIB:library
LIBCMTD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Release/Fire07.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Creating browse info file...Fire07.exe - 14 error(s), 10 warning(s)
  我已经在project->setting下,将工程的Use run-time library设置成了Multithreaded DLL(project options下有 /MD标示),请大家帮忙替我分析一下原因。谢谢!

解决方案 »

  1.   

    要保证你的项目中所有的模块设置都为 Multithreaded DLL.
    实在没办法,你也可以强制输出 settings->link->customize->fore file output 。
      

  2.   

    我试了一下强制输出的方法:
    在debug模式下编译通过,也可以执行。
    在release模式下编译通过,但无法执行。
    不知何故,总觉得好像什麽地方有问题,请大家帮忙指教!
      

  3.   

    /MD
    MSVCRT.LIB
    多线程DLL的Release版本/MTd
    LIBCMTD.LIB
    多线程静态链接的Debug版本
    你的问题应该是debug和release的库在连接的时候用混了。
      

  4.   

    你的LIBCMTD.lib库跟msvcrt.lib运行库有冲突!
      

  5.   


    请问如何忽略libcmtd.lib? 配置里有忽略导入库, .NET后
      

  6.   

    error LNK2001: unresolved external symbol _main一下就看到上面这句了,工程类型不对啊,改成subsystem:windows
      

  7.   

    如果是用VS.net怎么办啊,我也遇到了同样的问题,急啊