DatoKuo
驱动牛犊
驱动牛犊
  • 注册日期2008-12-03
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2936回复:3

请问WDK及VC连结的问题

楼主#
更多 发布于:2008-12-03 19:05
大家好,我使用WDK (for 2008 6001.18001)做了一个文件过滤驱动(使用mini-filter)。另有做一支与Kernel通讯的User-Mode程序(使用了FilterConnectCommunicationPort之类的通讯函数),参考mini-filter的scanner范例做的。

现在遇到的问题是:我把User-Mode程序中,与Kernel通讯的功能包成函数库,并编译成静态函数库档案(.lib),想说可以让VC的程序使用。结果,我把用WDK编译好的.lib文件,让VC的程序使用,编译时竟产生连结错误的错误讯息,似乎无法连结:

D:\ FilterDriver\Demo>cl test.c fsuser.lib
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

test.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:test.exe
test.obj
fsuser.lib
test.obj : error LNK2001: unresolved external symbol _FILTER_Disconnect
test.obj : error LNK2001: unresolved external symbol _FILTER_WaitForFilter
test.obj : error LNK2001: unresolved external symbol _FILTER_StartFilter
test.obj : error LNK2001: unresolved external symbol _FILTER_SetupFilterFunction
test.obj : error LNK2001: unresolved external symbol _FILTER_SetupFilterRule
test.obj : error LNK2001: unresolved external symbol _FILTER_QueryVersion
test.obj : error LNK2001: unresolved external symbol _FILTER_ConnectToDriver
test.exe : fatal error LNK1120: 7 unresolved externals

D:\ FilterDriver\Demo>

原本以为是不是我制作静态函数库档案失败了,可是我把用WDK编译的.lib档案,另外撰写WDK程序使用,结果可以顺利连结及使用。看来不知道是不是WDK的编译器及VC不兼容呢?…有没有解决的方法(让WDK编译的LIB可以给VC使用)?(因某些因素不考虑做成DLL)
DatoKuo
驱动牛犊
驱动牛犊
  • 注册日期2008-12-03
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-12-03 19:11
附上我编译成函数时的sources档案如下,希望有大牛们帮我解答,不知是不是我source檔寫漏了什麼:

TARGETNAME=XXXX
TARGETTYPE=LIBRARY

C_DEFINES=$(C_DEFINES) -DUNICODE -D_UNICODE

LINKLIBS=$(SDK_LIB_PATH)\shell32.lib

INCLUDES=$(INCLUDES);         \
         $(IFSKIT_INC_PATH);  \
         $(DDK_INC_PATH);

TARGETLIBS=$(TARGETLIBS) \
           $(IFSKIT_LIB_PATH)\fltLib.lib

SOURCES=XXXX.c

!if "$(DDK_TARGET_OS)"=="WinLH"
_NT_TARGET_VERSION=$(_NT_TARGET_VERSION_WINXP)
!endif
DatoKuo
驱动牛犊
驱动牛犊
  • 注册日期2008-12-03
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-12-03 22:37
不好意思,已解決了。
jameslee98
驱动牛犊
驱动牛犊
  • 注册日期2005-07-30
  • 最后登录2009-05-05
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-03-30 17:40
楼主能告诉是怎么解决的吗?我也遇到了几乎相同的问题,试了好多方法,几天了,还是没解决。
游客

返回顶部