boost - 在应用程序的 WDK 构建环境中使用 boost?

标签 boost kernel driver iostream wdk

我正在使用 Windows Driver Kit (WinDDK 6001.18001) 来构建我的用户空间应用程序,而不是 Visual Studio 2005。我采用这种方法是因为我们还必须构建驱动程序组件,所以我更喜欢有一个单一的构建环境来构建所有内容. Microsoft 本身将这种方法用于多种产品。

这一直很好,直到我开始使用 Boost 1.38.0。我没有在内核模式组件中使用 C++,只是在用户空间应用程序中使用。在 C++ 代码中,使用 boost 库是很自然的。不幸的是,WDK 不同意。

我注意到的第一个错误是“#include ”没有放入 ptrdiff_t在 std 命名空间中,正如附件 D 所要求的那样。解决这个问题在 boost\lambda\detail\operator_return_type_traits.hpp 中留下了几个错误关于 error C2976: 'std::basic_string' : too few template arguments.对于 iostream,它显得多余。

有没有人成功地将 Boost、iostream 和 WDK 组合在一起工作?

我的源文件:

TARGETNAME=foobar
TARGETTYPE=PROGRAM

USE_MSVCRT = 1
USE_STL = 1
USE_ATL = 1
ATL_VER = 30
STL_VER = 70
USE_NATIVE_EH = 1 
USE_IOSTREAM = 1

SUBSYSTEM_VERSION = 5.02

C_DEFINES = \
    -D_MT \
    -DWIN_32 \
    -DWIN32  \
    -D_WINDOWS \
    -DNT \
    -D_WIN32_DCOM \
    -DUNICODE \
    -D_UNICODE \
    -D_ATL_NO_DEBUG_CRT # because we are using USE_MSVCRT=1 

SOURCES=service.cpp

INCLUDES=\
    $(BOOST_INC_PATH)

TARGETLIBS=\
    $(SDK_LIB_PATH)\ole32.lib \
    $(SDK_LIB_PATH)\oleaut32.lib \
    $(SDK_LIB_PATH)\uuid.lib \

UMTYPE=console
UMBASE=0x400000

服务.cpp:
#include <iostream>
#include <cstddef>

namespace std {
        typedef ::ptrdiff_t ptrdiff_t; // DDK C++ workaround
}

#include <boost/lambda/lambda.hpp>

int __cdecl main() {
    return 0;
}

最佳答案

有趣的问题。对于 WDK,按原样使用 STL 本身就是一个挑战。我没有冒险超越。我可以试试这个。请记住,WDK 有自己的编译器,这与您的 VS2005/VS2008 编译器不同(检查版本号)。很可能这里和那里有一些错误。

请注意,USE_MSVCRT=1USE_STL=1胶凝效果不佳(至少对于 WDK 6001)。

关于boost - 在应用程序的 WDK 构建环境中使用 boost?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718309/

相关文章:

php - 我找不到包含 PHP MySQL native 驱动程序 (mysqlnd) 的 CentOS 6.6 存储库

linux - 如何从 panic 中定位错误

c++ - boost shared_ptr 初始化为类成员

c - 内核模块中的 GMP

c++ - remove_if with boost::bind 很慢

kernel - 当对 TfIdfVectorizer 使用 linear_kernel 或 cosine_similarity 时,我收到错误 "Kernel died, restarting"

linux - 如何从控制台保存或长期查看 Linux 内核 BUG 消息?

macos - 苹果操作系统 : get full control of web-camera (USB connected)

c++ - 链接boost库时程序无错退出

具有包装随机访问的 C++ vector ?