阅读:2937回复:3
请问WDK及VC连结的问题
大家好,我使用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) |
|
沙发#
发布于: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 |
|
板凳#
发布于:2008-12-03 22:37
不好意思,已解決了。
|
|
地板#
发布于:2009-03-30 17:40
楼主能告诉是怎么解决的吗?我也遇到了几乎相同的问题,试了好多方法,几天了,还是没解决。
|
|