我写了个directDraw的程序,出现以下错误
--------------------Configuration: ddraw1 - Win32 Debug--------------------
Compiling...
ddraw1.cpp
Ddraw1Wnd.cpp
StdAfx.cpp
Linking...
ddraw1.obj : error LNK2001: unresolved external symbol _DirectDrawCreate@12
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/ddraw1.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.ddraw1.exe - 4 error(s), 0 warning(s)
这是为何呀?

解决方案 »

  1.   

    _DirectDrawCreate 这个没有引用吧?
      

  2.   

    在我的程序中有了:ddrval = DirectDrawCreate( NULL, &lpDD, NULL );
    看来不是你说的问题了。
      

  3.   

    要加库文件的,我写DirectShow程序的时候,要加相关的库文件和头文件才可以。
    看你的报错消息,可以看出,编译是通过了的,是Link的时候出了错。我DirectDraw不熟悉啦,不过我想应当是少加了库文件。
      

  4.   

    应该是少了.LIB文件没加进去
    #include <ddraw.h> 
    然后在Project/setting/link/第二行里面有很多.lib文件对不?加入dxguid.lib ddraw.lib这两个进去应该就OK了!如果还有问题请加我QQ20538358!!
      

  5.   

    我帮你看了一下,第一个报错,是不认识DirectDrawCreate函数,你要加ddraw.h.这个头文件,还有加ddraw.lib这个库文件。加头文件总会把,加库文件的方法:
    菜单项/Project/Setting/ 这样打开了一个属性框,你选Link这一页,在Object/Library models...里面写上ddraw.lib就可以了。至于还有什么别的文件,你得看看书了。
      

  6.   

    楼上,dxguid.lib 不一定要加吧?!我DirectShow里有用过哦,加了<streams.h>头文件才要加它的。
      

  7.   

    错误:
    -------------------Configuration: ddraw1 - Win32 Debug--------------------
    Compiling...
    ddraw1.cpp
    Ddraw1Wnd.cpp
    Linking...
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
    Debug/ddraw1.exe : fatal error LNK1120: 2 unresolved externals
    Error executing link.exe.ddraw1.exe - 3 error(s), 0 warning(s)
      

  8.   

    我看了MSDN,__endthreadex,__beginthreadex是要这两个库的,头文件你们不要加了,因为肯定有内部函数加了,你加反而会错。你把这两个加进去试试,我也不能肯定啊:
    LIBCMT.LIB 
    MSVCRT.LIB 
    另外,我是加的这两个库函数,你也加进去试试,反正少加了会错,多加了绝对不会有事的,呵呵:
    strmiids.lib Quartz.lib 
    另外还要在Tools/Options/Directories下将"Show directores for"选为Include files,然后在下面加你DirectX的路径\Include
    菩萨保佑你。
      

  9.   

    是不是还要装DirectX呢?我没有装,怎么加我DirectX的路径\Include呢?
    所有的连接库加上出现:
    --------------------Configuration: ddraw1 - Win32 Debug--------------------
    Linking...
    libcd.lib(dbgheap.obj) : error LNK2005: _malloc already defined in libcmt.lib(malloc.obj)
    libcd.lib(dbgheap.obj) : error LNK2005: __nh_malloc already defined in libcmt.lib(malloc.obj)
    libcd.lib(dbgheap.obj) : error LNK2005: __heap_alloc already defined in libcmt.lib(malloc.obj)
    libcd.lib(dbgheap.obj) : error LNK2005: _calloc already defined in libcmt.lib(calloc.obj)
    libcd.lib(dbgheap.obj) : error LNK2005: _realloc already defined in libcmt.lib(realloc.obj)
    libcd.lib(dbgheap.obj) : error LNK2005: _free already defined in libcmt.lib(free.obj)
    libcd.lib(dbgheap.obj) : error LNK2005: __msize already defined in libcmt.lib(msize.obj)
    libcd.lib(sbheap.obj) : error LNK2005: __get_sbh_threshold already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: __set_sbh_threshold already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_heap_init already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_find_block already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_free_block already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_block already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_region already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_group already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_resize_block already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_heapmin already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_heap_check already defined in libcmt.lib(sbheap.obj)
    libcd.lib(sbheap.obj) : error LNK2005: ___sbh_threshold already defined in libcmt.lib(sbheap.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __cinit already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: _exit already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __exit already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __cexit already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __c_exit already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __C_Exit_Done already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __C_Termination_Done already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __exitflag already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __wpgmptr already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __pgmptr already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: ___winitenv already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __wenviron already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: ___initenv already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __environ already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: ___wargv already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: ___argv already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: ___argc already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __winminor already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __winmajor already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __winver already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __osver already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(crt0dat.obj) : error LNK2005: __umaskval already defined in libcmt.lib(crt0dat.obj)
    libcd.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in libcmt.lib(winxfltr.obj)
    libcd.lib(winxfltr.obj) : error LNK2005: __XcptActTabCount already defined in libcmt.lib(winxfltr.obj)
    libcd.lib(winxfltr.obj) : error LNK2005: __Num_FPE already defined in libcmt.lib(winxfltr.obj)
    libcd.lib(winxfltr.obj) : error LNK2005: __First_FPE_Indx already defined in libcmt.lib(winxfltr.obj)
    libcd.lib(winxfltr.obj) : error LNK2005: __XcptActTab already defined in libcmt.lib(winxfltr.obj)
    LINK : warning LNK4098: defaultlib "libcd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
    Debug/ddraw1.exe : fatal error LNK1169: one or more multiply defined symbols found
    Error executing link.exe.ddraw1.exe - 47 error(s), 1 warning(s)