在 KMDF 驱动程序中包含 fstream.h 后出现链接器错误
Linker error after including fstream.h in KMDF driver
我是驱动开发的新手。这是我的代码:
#include <ndis.h>
#include <fwpmk.h>
#include <fwpvi.h>
#include <fwpsk.h>
#include <fstream.h>
#pragma comment(lib, "libcpmtd.lib")
extern "C" {
NTSTATUS DriverEntry(
_In_ struct _DRIVER_OBJECT *DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
ofstream s("D:\somefile.txt");
s << "driver initialized.";
return 0;
}
}
产生以下错误列表:
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: virtual __thiscall ios::~ios(void)" (??1ios@@UAE@XZ) referenced in function "public: void __thiscall ofstream::`vbase destructor'(void)" (??_Dofstream@@QAEXXZ) KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK2019 unresolved external symbol "public: class ostream & __thiscall ostream::operator<<(char const *)" (??6ostream@@QAEAAV0@PBD@Z) referenced in function _DriverEntry@8 KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK2019 unresolved external symbol "public: __thiscall ofstream::ofstream(char const *,int,int)" (??0ofstream@@QAE@PBDHH@Z) referenced in function _DriverEntry@8 KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK2019 unresolved external symbol "public: virtual __thiscall ofstream::~ofstream(void)" (??1ofstream@@UAE@XZ) referenced in function "public: void __thiscall ofstream::`vbase destructor'(void)" (??_Dofstream@@QAEXXZ) KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK2001 unresolved external symbol "public: static int const filebuf::openprot" (?openprot@filebuf@@2HB) KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK1120 5 unresolved externals KMDF Driver1 D:\Projects\C++\KMDF Driver1\Debug\KMDFDriver1.sys 1
这个符号 (ios, ofstream)- 来自 msvcrt.dll(或者即使使用静态 libc - 例如它具有来自 kernel32.dll 的依赖项)并且不能在内核模式下使用.您需要删除 "ostream s"- 使用 DbgPrint 或 ZwCreateFile/ZwWriteFile 进行日志记录
我是驱动开发的新手。这是我的代码:
#include <ndis.h>
#include <fwpmk.h>
#include <fwpvi.h>
#include <fwpsk.h>
#include <fstream.h>
#pragma comment(lib, "libcpmtd.lib")
extern "C" {
NTSTATUS DriverEntry(
_In_ struct _DRIVER_OBJECT *DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
ofstream s("D:\somefile.txt");
s << "driver initialized.";
return 0;
}
}
产生以下错误列表:
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: virtual __thiscall ios::~ios(void)" (??1ios@@UAE@XZ) referenced in function "public: void __thiscall ofstream::`vbase destructor'(void)" (??_Dofstream@@QAEXXZ) KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK2019 unresolved external symbol "public: class ostream & __thiscall ostream::operator<<(char const *)" (??6ostream@@QAEAAV0@PBD@Z) referenced in function _DriverEntry@8 KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK2019 unresolved external symbol "public: __thiscall ofstream::ofstream(char const *,int,int)" (??0ofstream@@QAE@PBDHH@Z) referenced in function _DriverEntry@8 KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK2019 unresolved external symbol "public: virtual __thiscall ofstream::~ofstream(void)" (??1ofstream@@UAE@XZ) referenced in function "public: void __thiscall ofstream::`vbase destructor'(void)" (??_Dofstream@@QAEXXZ) KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK2001 unresolved external symbol "public: static int const filebuf::openprot" (?openprot@filebuf@@2HB) KMDF Driver1 D:\Projects\C++\KMDF Driver1\KMDF Driver1\Source.obj 1
Error LNK1120 5 unresolved externals KMDF Driver1 D:\Projects\C++\KMDF Driver1\Debug\KMDFDriver1.sys 1
这个符号 (ios, ofstream)- 来自 msvcrt.dll(或者即使使用静态 libc - 例如它具有来自 kernel32.dll 的依赖项)并且不能在内核模式下使用.您需要删除 "ostream s"- 使用 DbgPrint 或 ZwCreateFile/ZwWriteFile 进行日志记录