Tôi đang sử dụng Bộ điều khiển Windows (WinDDK 6001.18001) để xây dựng ứng dụng không gian người dùng của tôi thay vì Visual Studio 2005. Tôi đang sử dụng phương pháp này vì chúng tôi cũng phải xây dựng các thành phần trình điều khiển, vì vậy tôi muốn có một môi trường xây dựng duy nhất xây dựng mọi thứ. Bản thân Microsoft sử dụng phương pháp này cho một số sản phẩm.Sử dụng tăng cường môi trường xây dựng WDK cho các ứng dụng?
Tính năng này hoạt động tốt cho đến khi tôi bắt đầu sử dụng Boost 1.38.0. Tôi không sử dụng C++ trong các thành phần chế độ lõi, chỉ là các ứng dụng không gian người dùng. Trong mã C++, việc sử dụng các thư viện boost là điều tự nhiên. Thật không may, WDK không đồng ý.
Lỗi đầu tiên tôi nhận thấy là "#include <cstddef>" không đặt ptrdiff_t
trong namespace std, như dường như theo yêu cầu của Phụ lục D. Làm việc xung quanh này lại một số lỗi trong boost\lambda\detail\operator_return_type_traits.hpp
về error C2976: 'std::basic_string' : too few template arguments.
Có vẻ dư thừa với iostream .
Có ai thành công trong việc kết hợp Boost, iostream và WDK để làm việc cùng nhau không?
nguồn My file:
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
service.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;
}
Cảm ơn bạn đã chia sẻ trải nghiệm của mình. Tôi đã thử sử dụng USE_LIBCMT = 1 thay vì msvcrt, nhưng vấn đề vẫn còn. Cho rằng ngay cả STL là vấn đề, tôi sẽ phải xem xét lại bằng cách sử dụng WDK. –
Chúng tôi xây dựng phần ứng dụng của chúng tôi w/VS200x và trình điều khiển chỉ với WDK. Lưu ý, tiện ích ddkbuild chỉ là một tệp bó bao quanh các đối số dòng lệnh (tôi sử dụng nó mọi lúc) và nó có thể sẽ không giúp phân loại các vấn đề trình biên dịch. – dirkgently
Tôi đề xuất sử dụng ddkbuild để xây dựng trình điều khiển và sử dụng tiêu chuẩn so với dự án để xây dựng ứng dụng. Bạn sẽ có một giải pháp mà một trong những dự án (trình điều khiển) sẽ được xây dựng với tùy chỉnh xây dựng bằng cách sử dụng ddkbuild và thứ hai (Boost) sẽ được xây dựng theo cách tiêu chuẩn. – Ilya