找不到$(TARGETLIBS) 的方法解决

使用DriverStudio将驱动程序source文件转化为vcproj文件时,在链接时常见错误有一个是:找不到$(TARGETLIBS) ,仔细看看这个宏定义是没有定义,如果没有定义的话,就会出strstr,_snprintf等等函数找不到。

解决方法:

$(TARGETLIBS)其实对应于LIBC.LIB,LIBCMT.LIB,MSVCRT.LIB,LIBCD.LIB,LIBCMTD.LIB,MSVCRTD.LIB。如何判别到底是那一个库呢?先看一下,下面的对应表:

C run-time library (without iostream or standard C++ library) Characteristics Option Preprocessor directives
LIBC.LIB Single-threaded, static link /ML  
LIBCMT.LIB Multithreaded, static link /MT _MT
MSVCRT.LIB Multithreaded, dynamic link (import library for MSVCR71.DLL). Be aware that if you use the Standard C++ Library, your program will need MSVCP71.DLL to run. /MD _MT, _DLL
LIBCD.LIB Single-threaded, static link (debug) /MLd _DEBUG
LIBCMTD.LIB Multithreaded, static link (debug) /MTd _DEBUG, _MT
MSVCRTD.LIB Multithreaded, dynamic link (import library for MSVCR71D.DLL) (debug) /MDd _DEBUG, _MT, _DLL

从表中你可以知道这个库是与VC工程所选的“运行时库”有关的,那么就这只要查看一下:

选择“项目”-》“属性”-》“C/C ”-》“代码生成”-》“运行时库”,看一下是MT还是其它,对应于的LIB,然后在“项目”-》“属性”-》“链接器”-》“输入”-》“附加依赖项”,增加相应的库即可

你可能感兴趣的:(WINDOWS驱动设计,library,preprocessor,iostream,import,c++,dll)