Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Linker problem with WinDDK

Linker problem with WinDDK

Scheduled Pinned Locked Moved C / C++ / MFC
c++delphihelpquestion
9 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    sashoalm
    wrote on last edited by
    #1

    Hi, I'm trying to create a driver, for which I use WinDDK 7600.16385.0 But when I add a *.lib file, the linker still gives "unresolved external symbol" errors the same as if I haven't added it at all. I know the linker looks for the *.lib file, because I checked - I renamed the lib file to something else and the linker immediately complained that it can't find it. Does anyone here know what might be the problem? I've referenced the lib file and the include files' dir in the sources file of the driver:

    TARGETNAME=driver_drv
    TARGETPATH=obj
    TARGETTYPE=DYNLINK
    TARGETLIBS=$(SDK_LIB_PATH)\winspool.lib \
    $(SDK_LIB_PATH)\user32.lib \
    $(SDK_LIB_PATH)\kernel32.lib \
    $(SDK_LIB_PATH)\advapi32.lib \
    $(DDK_LIB_PATH)\umpdddi.lib \
    $(SDK_LIB_PATH)\comdlg32.lib \
    $(SDK_LIB_PATH)\ntdll.lib \
    $(SDK_LIB_PATH)\win32k.lib \
    $(SDK_LIB_PATH)\gdi32.lib \
    ----> C:\MYLIB.LIB <---------------------------------------------- See here

    USE_MSVCRT=1
    USE_STL=1
    USER_C_FLAGS=/EHsc

    DLLDEF=driver.def
    DLLORDER=driver.prf
    DLLENTRY=_DllMainCRTStartup

    INCLUDES=C:\MYLIB\Include <---------------------------------------------- See here

    C_DEFINES=$(C_DEFINES) -DSTRICT -DUNICODE -D_UNICODE -DUMODE -DUSERMODE_DRIVER

    C_DEFINES=$(C_DEFINES) -DWIN32 -D_CONSOLE -D_VISUALC_ -DNeedFunctionPrototypes -D_DLL

    NTPROFILEINPUT=yes
    MSC_WARNING_LEVEL=$(MSC_WARNING_LEVEL) /WX /W3

    SOURCES=driver.cpp \
    driver.rc

    There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition. Blaise Pascal

    T 1 Reply Last reply
    0
    • S sashoalm

      Hi, I'm trying to create a driver, for which I use WinDDK 7600.16385.0 But when I add a *.lib file, the linker still gives "unresolved external symbol" errors the same as if I haven't added it at all. I know the linker looks for the *.lib file, because I checked - I renamed the lib file to something else and the linker immediately complained that it can't find it. Does anyone here know what might be the problem? I've referenced the lib file and the include files' dir in the sources file of the driver:

      TARGETNAME=driver_drv
      TARGETPATH=obj
      TARGETTYPE=DYNLINK
      TARGETLIBS=$(SDK_LIB_PATH)\winspool.lib \
      $(SDK_LIB_PATH)\user32.lib \
      $(SDK_LIB_PATH)\kernel32.lib \
      $(SDK_LIB_PATH)\advapi32.lib \
      $(DDK_LIB_PATH)\umpdddi.lib \
      $(SDK_LIB_PATH)\comdlg32.lib \
      $(SDK_LIB_PATH)\ntdll.lib \
      $(SDK_LIB_PATH)\win32k.lib \
      $(SDK_LIB_PATH)\gdi32.lib \
      ----> C:\MYLIB.LIB <---------------------------------------------- See here

      USE_MSVCRT=1
      USE_STL=1
      USER_C_FLAGS=/EHsc

      DLLDEF=driver.def
      DLLORDER=driver.prf
      DLLENTRY=_DllMainCRTStartup

      INCLUDES=C:\MYLIB\Include <---------------------------------------------- See here

      C_DEFINES=$(C_DEFINES) -DSTRICT -DUNICODE -D_UNICODE -DUMODE -DUSERMODE_DRIVER

      C_DEFINES=$(C_DEFINES) -DWIN32 -D_CONSOLE -D_VISUALC_ -DNeedFunctionPrototypes -D_DLL

      NTPROFILEINPUT=yes
      MSC_WARNING_LEVEL=$(MSC_WARNING_LEVEL) /WX /W3

      SOURCES=driver.cpp \
      driver.rc

      There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition. Blaise Pascal

      T Offline
      T Offline
      thready
      wrote on last edited by
      #2

      Did you ever figure out how to use the WinDDK with MFC? If yes, I'd so much appreciate it if you could tell me your project settings!

      S 1 Reply Last reply
      0
      • T thready

        Did you ever figure out how to use the WinDDK with MFC? If yes, I'd so much appreciate it if you could tell me your project settings!

        S Offline
        S Offline
        sashoalm
        wrote on last edited by
        #3

        Can't you just use win32 for whatever dialogs you need to show? You usually shouldn't embed any gui code inside a driver anyway. It works in XP but wait till you see how it behaves on Win7.

        There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition. Blaise Pascal

        T 1 Reply Last reply
        0
        • S sashoalm

          Can't you just use win32 for whatever dialogs you need to show? You usually shouldn't embed any gui code inside a driver anyway. It works in XP but wait till you see how it behaves on Win7.

          There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition. Blaise Pascal

          T Offline
          T Offline
          thready
          wrote on last edited by
          #4

          I'm trying to create a DLL that links to the DDK, with a COM object as my interface to the DLL... Can this be done without MFC? (there are no dialogs at all)...

          S 1 Reply Last reply
          0
          • T thready

            I'm trying to create a DLL that links to the DDK, with a COM object as my interface to the DLL... Can this be done without MFC? (there are no dialogs at all)...

            S Offline
            S Offline
            sashoalm
            wrote on last edited by
            #5

            "with a COM object as my interface to the DLL" Could you clarify this? COM even can be made in plain C (not C++), so you certainly don't need MFC. MFC does offer some handy classes like COleDispatchDriver that make working with COM easier though. I think you can use ATL instead, which has alternative classes.

            There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition. Blaise Pascal

            T 1 Reply Last reply
            0
            • S sashoalm

              "with a COM object as my interface to the DLL" Could you clarify this? COM even can be made in plain C (not C++), so you certainly don't need MFC. MFC does offer some handy classes like COleDispatchDriver that make working with COM easier though. I think you can use ATL instead, which has alternative classes.

              There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition. Blaise Pascal

              T Offline
              T Offline
              thready
              wrote on last edited by
              #6

              I need to create another project with its own import settings, so I thought a DLL would be my best bet, however I never understood how to properly export functions other than with COM. Using the "New Project" dialog in VC++, I thought my only option was to use "MFC DLL". You're saying otherwise though and that sure sounds good. What type of project should I create? And how do I add my COM class to this project once it's created?

              S 1 Reply Last reply
              0
              • T thready

                I need to create another project with its own import settings, so I thought a DLL would be my best bet, however I never understood how to properly export functions other than with COM. Using the "New Project" dialog in VC++, I thought my only option was to use "MFC DLL". You're saying otherwise though and that sure sounds good. What type of project should I create? And how do I add my COM class to this project once it's created?

                S Offline
                S Offline
                sashoalm
                wrote on last edited by
                #7

                Am I getting this all wrong? I thought you wanted to make a driver, but now you talk about New Project with VC++,COM and etc., which has nothing to do with drivers. WinDDK isn't VC++, it's a framework for making drivers (like network/usb/printer/display drivers). Sorry, just have to make sure we're having the same thing in mind, otherwise we'd just confuse each other.

                There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition. Blaise Pascal

                T 1 Reply Last reply
                0
                • S sashoalm

                  Am I getting this all wrong? I thought you wanted to make a driver, but now you talk about New Project with VC++,COM and etc., which has nothing to do with drivers. WinDDK isn't VC++, it's a framework for making drivers (like network/usb/printer/display drivers). Sorry, just have to make sure we're having the same thing in mind, otherwise we'd just confuse each other.

                  There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition. Blaise Pascal

                  T Offline
                  T Offline
                  thready
                  wrote on last edited by
                  #8

                  Well not a driver, but a USB HID device - so sort of a driver? I've got this credit card reader that is a USBHID device - so you need to use the WinDDK. Here's my story - I actually got this working in VC++ 6.0 about 3 years ago and now I can't figure out how to setup my project anymore. But that's just what I did - I created a COM object and linked to the DDK (from VC++ 6.0). Now I've upgraded to VC++ 2008 and just want to take the best route - if I have to learn the right way of doing it along the way, BONUS! I'm all ears. Just because I got it working before doesn't mean it was the best way of doing it anyway - and just the same, I can't get my project linked with MFC. Current project settings: (with errors below) Use MFC in a Static Library Not Using ATL Additional include directories: C:\WinDDK\7600.16385.0\inc C:\WinDDK\7600.16385.0\inc\api C:\WinDDK\7600.16385.0\inc\crt C:\WinDDK\7600.16385.0\inc\mfc42 C:\WinDDK\7600.16385.0\inc\ddk C:\WinDDK\7600.16385.0\inc\api\dao360 Ignore standard include path: No Additional library directories: C:\WinDDK\7600.16385.0\lib\wxp\i386 C:\WinDDK\7600.16385.0\lib\Mfc\i386 C:\WinDDK\7600.16385.0\lib\ATL\i386 Additional dependencies: ntdll.lib msvcrtd.lib Errors: 1>Linking... 1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/RELEASE' specification 1>LINK : warning LNK4075: ignoring '/DELAYLOAD' due to '/DRIVER' specification 1>MathHelper.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/DRIVER' specification 1> Creating library C:\dev\USBHIDCardReader\Debug\USBHIDCardReader.lib and object C:\dev\USBHIDCardReader\Debug\USBHIDCardReader.exp 1>LINK : error LNK2001: unresolved external symbol _DriverEntry 1>USBHIDCrdRdrThread.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>MathHelper.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>stdafx.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>StringHelper.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>USBHIDCardReader.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>USBHIDCrdRdrThread.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL 1>MathHelper.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL 1>stdafx.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL 1>StringHelper.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL 1>USBHIDCardReader.obj : error LNK2001: un

                  S 1 Reply Last reply
                  0
                  • T thready

                    Well not a driver, but a USB HID device - so sort of a driver? I've got this credit card reader that is a USBHID device - so you need to use the WinDDK. Here's my story - I actually got this working in VC++ 6.0 about 3 years ago and now I can't figure out how to setup my project anymore. But that's just what I did - I created a COM object and linked to the DDK (from VC++ 6.0). Now I've upgraded to VC++ 2008 and just want to take the best route - if I have to learn the right way of doing it along the way, BONUS! I'm all ears. Just because I got it working before doesn't mean it was the best way of doing it anyway - and just the same, I can't get my project linked with MFC. Current project settings: (with errors below) Use MFC in a Static Library Not Using ATL Additional include directories: C:\WinDDK\7600.16385.0\inc C:\WinDDK\7600.16385.0\inc\api C:\WinDDK\7600.16385.0\inc\crt C:\WinDDK\7600.16385.0\inc\mfc42 C:\WinDDK\7600.16385.0\inc\ddk C:\WinDDK\7600.16385.0\inc\api\dao360 Ignore standard include path: No Additional library directories: C:\WinDDK\7600.16385.0\lib\wxp\i386 C:\WinDDK\7600.16385.0\lib\Mfc\i386 C:\WinDDK\7600.16385.0\lib\ATL\i386 Additional dependencies: ntdll.lib msvcrtd.lib Errors: 1>Linking... 1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/RELEASE' specification 1>LINK : warning LNK4075: ignoring '/DELAYLOAD' due to '/DRIVER' specification 1>MathHelper.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/DRIVER' specification 1> Creating library C:\dev\USBHIDCardReader\Debug\USBHIDCardReader.lib and object C:\dev\USBHIDCardReader\Debug\USBHIDCardReader.exp 1>LINK : error LNK2001: unresolved external symbol _DriverEntry 1>USBHIDCrdRdrThread.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>MathHelper.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>stdafx.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>StringHelper.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>USBHIDCardReader.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE 1>USBHIDCrdRdrThread.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL 1>MathHelper.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL 1>stdafx.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL 1>StringHelper.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL 1>USBHIDCardReader.obj : error LNK2001: un

                    S Offline
                    S Offline
                    sashoalm
                    wrote on last edited by
                    #9

                    Yes, I see now why you were talking about VC++. The thing is, WinDDK comes with its own compiler, which is 'annointed' (i.e. official and supported) by the DDK development team. WinDDK is intended to work with it. Now, that doesn't mean it won't work with other compilers - you've made it work with VC6, but that's not how it's intended (by microsoft) to be compiled. What I did was I used their official compiler which comes with WinDDK and is in fact in the directory (C:\WinDDK\bin or something). So if you really want to use VS2008 I can't be of much help because that's not how I did it. I used the WinDDK official compiler. See if this thread (http://www.osronline.com/showthread.cfm?link=151863) can help you, they talk about how to make it work with VS2008 there.

                    There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition. Blaise Pascal

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • World
                    • Users
                    • Groups