boost 相关问题

Boost是一系列旨在用于C ++的高质量库。 Boost是免费的,通常被认为是“第二标准库”。

如何通过 CMake 在 Visual Studio 2022 中链接已编译的 Boost 二进制文件?

我已将 Boost 下载到 D:\(不是默认路径)并使用生成所有二进制文件 . 2 -j4 link=静态线程=多运行时链接=共享 --build-type=最小阶段 --stagedir=stage/ 然后我

回答 1 投票 0

如何在boost单元测试中比较char*和字符串?

我有如下代码: BOOST_FIXTURE_TEST_CASE(测试,TestSuite1) { 无符号整型长度= 5; char* content1=新的char[长度]; 内容1=“abcde”; 字符串内容2(“abcde”);

回答 6 投票 0

使用 Emscripten 编译时如何正确链接 Boost?

使用 Emscripten 编译时如何正确链接 Boost? 主要.cpp: #包括 int main() { boost::filesystem::exists("file.txt"); } 编译并链接: &...

回答 1 投票 0

如何与 Boost.Asio 同时从 TAP 设备读取(通过 posix::stream_descriptor)?

我的程序应该同时从生成的 TAP 设备读取数据包并处理它们。为此,我使用 LaKabane 的 tuntap 库以及 Boost.Asio 的 posix::stream_descriptor。 豪...

回答 1 投票 0

GetLastError 自定义属性

我想在每个日志输出中包含 GetLastError,但是当 boost::log 在查询属性值之前调用另一个 Windows API 时,该值会被覆盖。任何人都知道解决这个问题的好方法...

回答 1 投票 0

C++ Boost 描述递归结构迭代错误

我正在编写一个代码,该代码使用 Boost 库递归地迭代一个结构,并将缓冲区中的字节放入该结构中。 模板 我正在编写一个代码,该代码使用 Boost 库递归地迭代一个结构,并将字节从缓冲区放入该结构中。 template<typename Base, class Md = boost::describe::describe_members<Base, boost::describe::mod_any_access>> void Parser::copyBytesToStruct(Base& base){ boost::mp11::mp_for_each<Md>([&](auto attr){ this->copyBytesToStructInner(base.*attr.pointer); }); } template<typename Attr> void Parser::copyBytesToStructInner(Attr& attr){ //check if iterated type is struct, if it is then recursively call this function for it if(std::is_class<Attr>::value){ this->copyBytesToStruct(attr); } else{ int bytesToGet = sizeof(Attr); if (this->buffer->availableToCopy() < bytesToGet) { std::string typeName = boost::typeindex::type_id_with_cvr<Attr>().pretty_name(); std::cerr << "No more remaining data in buffer to read " + typeName; return; } int beginPtr = this->buffer->getBeginPtr(); memcpy_s(this->buffer + beginPtr, this->buffer->availableToCopy(), &attr, bytesToGet); //if(!this->isBigEndian) __builtin_bswap(attr); todo: add some reverse logic here this->buffer->cutBytes(bytesToGet); } } copyBytesToStruct 最初将始终使用结构体进行调用。 然后我迭代结构体的成员和内部模板的内部,我检查该成员是否是结构体,如果是,我也想递归地迭代该成员。 这些是我正在使用和描述的用于提升的结构: namespace PE_STRUCTURE { struct DosHeader { WORD magic{}, //DOS .EXE header e_cblp{}, //Magic number e_cp{}, //Bytes on last page of file e_crlc{}, //Pages in file e_cparhdr{}, //Relocations e_minalloc{}, //Size of header in paragraphs e_maxalloc{}, //Minimum extra paragraphs needed e_ss{}, //Initial (relative) SS value e_sp{}, //Initial SP value e_csum{}, //Checksum e_ip{}, //Initial IP value e_cs{}, //Initial (relative) CS value e_lfarlc{}, //File address of relocation table e_ovno{}, //Overlay number e_res[4]{}, //Reserved words e_oemid{}, //OEM identifier e_oeminfo{}, //OEM information e_res2[10]{}; //Reserved words DWORD e_lfanew{}; //Address for NT Headers }; BOOST_DESCRIBE_STRUCT(DosHeader, (), (magic, e_cblp, e_cp, e_crlc, e_cparhdr, e_minalloc, e_maxalloc, e_ss, e_sp, e_csum, e_ip, e_cs, e_lfarlc, e_ovno, e_res, e_oemid, e_oeminfo, e_res2, e_lfanew)); //For PE32+ (64-bit) Executables struct ImageNtHeaders64 { DWORD signature{}; //almost always PE/0/0 IMAGE_FILE_HEADER FileHeader{}; //Some information, has OptionalHeader size IMAGE_OPTIONAL_HEADER64 OptionalHeader{}; //Some important info }; BOOST_DESCRIBE_STRUCT(ImageNtHeaders64, (), (signature, FileHeader, OptionalHeader)); BOOST_DESCRIBE_STRUCT(IMAGE_FILE_HEADER, (), (Machine, NumberOfSections, TimeDateStamp, PointerToSymbolTable, NumberOfSymbols, SizeOfOptionalHeader, Characteristics)); BOOST_DESCRIBE_STRUCT(IMAGE_OPTIONAL_HEADER32, (), (Magic, MajorLinkerVersion, MinorLinkerVersion, SizeOfCode, SizeOfInitializedData, SizeOfUninitializedData, AddressOfEntryPoint, BaseOfCode, BaseOfData, ImageBase, SectionAlignment, FileAlignment, MajorOperatingSystemVersion, MinorOperatingSystemVersion, Win32VersionValue, SizeOfImage, SizeOfHeaders, CheckSum, Subsystem, DllCharacteristics, SizeOfStackReserve, SizeOfStackCommit, SizeOfHeapReserve, SizeOfHeapCommit, LoaderFlags, NumberOfRvaAndSizes, DataDirectory)); BOOST_DESCRIBE_STRUCT(IMAGE_OPTIONAL_HEADER64, (), (Magic, MajorLinkerVersion, MinorLinkerVersion, SizeOfCode, SizeOfInitializedData, SizeOfUninitializedData, AddressOfEntryPoint, BaseOfCode, ImageBase, SectionAlignment, FileAlignment, MajorOperatingSystemVersion, MinorOperatingSystemVersion, Win32VersionValue, SizeOfImage, SizeOfHeaders, CheckSum, Subsystem, DllCharacteristics, SizeOfStackReserve, SizeOfStackCommit, SizeOfHeapReserve, SizeOfHeapCommit, LoaderFlags, NumberOfRvaAndSizes, DataDirectory)); BOOST_DESCRIBE_STRUCT(IMAGE_DATA_DIRECTORY, (), (VirtualAddress, Size)) //For PE32 Executables struct ImageNtHeaders { DWORD signature{}; IMAGE_FILE_HEADER FileHeader{}; IMAGE_OPTIONAL_HEADER32 OptionalHeader{}; }; BOOST_DESCRIBE_STRUCT(ImageNtHeaders, (), (signature, FileHeader, OptionalHeader)); }; 我在尝试构建时遇到这样的错误: error: no matching function for call to 'PE_PARSER::Parser::copyBytesToStruct(short unsigned int&)' 28 | this->copyBytesToStruct(attr); error: 'boost_public_member_descriptor_fn' was not declared in this scope; did you mean 'PE_STRUCTURE::boost_public_member_descriptor_fn'? 32 | template<class T> using _describe_public_members = decltype( boost_public_member_descriptor_fn( static_cast<T**>(0) ) ); error: no matching function for call to 'PE_PARSER::Parser::copyBytesToStruct(short unsigned int [4])' 28 | this->copyBytesToStruct(attr); error: 'boost_public_member_descriptor_fn' was not declared in this scope; did you mean 'PE_STRUCTURE::boost_public_member_descriptor_fn'? 32 | template<class T> using _describe_public_members = decltype( boost_public_member_descriptor_fn( static_cast<T**>(0) ) ); error: no matching function for call to 'PE_PARSER::Parser::copyBytesToStruct(short unsigned int [10])' 28 | this->copyBytesToStruct(attr); error: 'boost_public_member_descriptor_fn' was not declared in this scope; did you mean 'PE_STRUCTURE::boost_public_member_descriptor_fn'? 32 | template<class T> using _describe_public_members = decltype( boost_public_member_descriptor_fn( static_cast<T**>(0) ) ); error: no matching function for call to 'PE_PARSER::Parser::copyBytesToStruct(long unsigned int&)' 28 | this->copyBytesToStruct(attr); | ^~~~ error: 'boost_public_member_descriptor_fn' was not declared in this scope; did you mean 'PE_STRUCTURE::boost_public_member_descriptor_fn'? 32 | template<class T> using _describe_public_members = decltype( boost_public_member_descriptor_fn( static_cast<T**>(0) ) ); 这几乎就像编译器尝试使用整数调用 copyBytesToStruct,而该整数没有 BOOST_DESCRIBE_STRUCT - 该模板只能与结构一起使用。 我尝试对两个模板函数执行 std::enable_if_t ,但错误仍然相同: template<typename Base, class Md = boost::describe::describe_members<Base, boost::describe::mod_any_access>> std::enable_if_t<(std::is_class<Base>::value)> copyBytesToStruct(Base& base); 关于做什么/这里发生了什么有什么建议吗? 最小可重现示例: StructureRepro.hpp: #ifndef STRUCTURE_H #define STRUCTURE_H #include <Windows.h> #include <stdint.h> #include <winnt.h> #include <boost/describe/class.hpp> namespace PE_STRUCTURE { //For PE32+ (64-bit) Executables struct ImageNtHeaders64 { DWORD signature{}; //almost always PE/0/0 IMAGE_FILE_HEADER FileHeader{}; //Some information, has OptionalHeader size IMAGE_OPTIONAL_HEADER64 OptionalHeader{}; //Some important info }; BOOST_DESCRIBE_STRUCT(ImageNtHeaders64, (), (signature, FileHeader, OptionalHeader)); BOOST_DESCRIBE_STRUCT(IMAGE_FILE_HEADER, (), (Machine, NumberOfSections, TimeDateStamp, PointerToSymbolTable, NumberOfSymbols, SizeOfOptionalHeader, Characteristics)); BOOST_DESCRIBE_STRUCT(IMAGE_OPTIONAL_HEADER64, (), (Magic, MajorLinkerVersion, MinorLinkerVersion, SizeOfCode, SizeOfInitializedData, SizeOfUninitializedData, AddressOfEntryPoint, BaseOfCode, ImageBase, SectionAlignment, FileAlignment, MajorOperatingSystemVersion, MinorOperatingSystemVersion, Win32VersionValue, SizeOfImage, SizeOfHeaders, CheckSum, Subsystem, DllCharacteristics, SizeOfStackReserve, SizeOfStackCommit, SizeOfHeapReserve, SizeOfHeapCommit, LoaderFlags, NumberOfRvaAndSizes, DataDirectory)); BOOST_DESCRIBE_STRUCT(IMAGE_DATA_DIRECTORY, (), (VirtualAddress, Size)) }; #endif ParserRepro.cpp: #include "StructureRepro.hpp" #include <vector> #include <stdint.h> #include <windows.h> #include <fstream> #include <iostream> #include <cstring> #include <type_traits> #include <boost/mp11.hpp> #include <boost/type_index.hpp> #include <boost/describe.hpp> template<typename Attr> void copyBytesToStructInner(Attr& attr); template<typename Base, class Md = boost::describe::describe_members<Base, boost::describe::mod_any_access>> void copyBytesToStruct(Base& base){ boost::mp11::mp_for_each<Md>([&](auto attr){ copyBytesToStructInner(base.*attr.pointer); }); } template<typename Attr> void copyBytesToStructInner(Attr& attr){ //check if iterated type is struct, if it is then recursively call this function for it if(std::is_class<Attr>::value){ copyBytesToStruct(attr); } } void loadPEFileFromBinary() { PE_STRUCTURE::ImageNtHeaders64 st; copyBytesToStruct(st); } 这几乎就像编译器尝试使用整数调用 copyBytesToStruct,而该整数没有 BOOST_DESCRIBE_STRUCT - 该模板只能与结构一起使用。 这正是您的代码所做的,确实。 您可以通过将条件设置为 constexpr 来避免它: if constexpr (std::is_class_v<Attr>) { std::cout << __PRETTY_FUNCTION__ << " " << boost::typeindex::type_id<Attr>().pretty_name() << std::endl; copyBytesToStruct(attr); } else { std::cout << "Handle manually " << boost::typeindex::type_id<Attr>().pretty_name() << std::endl; } 现在,您还必须修复推导类型上的 const-ref 限定符(或用 std::decay_t 包装它们。 这是我的(非 Windows)模型。作为奖励,我投入了 C 风格数组的处理(因为这可能是您需要的): 住在Coliru #include <boost/describe.hpp> #include <boost/mp11.hpp> #include <boost/type_index.hpp> #include <cstdint> #include <iostream> namespace PE_STRUCTURE { using DWORD = uint32_t; struct IMAGE_FILE_HEADER { DWORD Machine, NumberOfSections, TimeDateStamp, PointerToSymbolTable, NumberOfSymbols, SizeOfOptionalHeader, Characteristics; }; struct IMAGE_DATA_DIRECTORY { DWORD VirtualAddress, Size; }; struct IMAGE_OPTIONAL_HEADER64 { DWORD Magic, MajorLinkerVersion, MinorLinkerVersion, SizeOfCode, SizeOfInitializedData, SizeOfUninitializedData, AddressOfEntryPoint, BaseOfCode, ImageBase, SectionAlignment, FileAlignment, MajorOperatingSystemVersion, MinorOperatingSystemVersion, Win32VersionValue, SizeOfImage, SizeOfHeaders, CheckSum, Subsystem, DllCharacteristics, SizeOfStackReserve, SizeOfStackCommit, SizeOfHeapReserve, SizeOfHeapCommit, LoaderFlags, NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[16]; }; // For PE32+ (64-bit) Executables struct ImageNtHeaders64 { DWORD signature{}; // almost always PE/0/0 IMAGE_FILE_HEADER FileHeader{}; // Some information, has OptionalHeader size IMAGE_OPTIONAL_HEADER64 OptionalHeader{}; // Some important info }; BOOST_DESCRIBE_STRUCT(ImageNtHeaders64, (), (signature, FileHeader, OptionalHeader)); BOOST_DESCRIBE_STRUCT(IMAGE_FILE_HEADER, (), (Machine, NumberOfSections, TimeDateStamp, PointerToSymbolTable, NumberOfSymbols, SizeOfOptionalHeader, Characteristics)); BOOST_DESCRIBE_STRUCT(IMAGE_OPTIONAL_HEADER64, (), (Magic, MajorLinkerVersion, MinorLinkerVersion, SizeOfCode, SizeOfInitializedData, SizeOfUninitializedData, AddressOfEntryPoint, BaseOfCode, ImageBase, SectionAlignment, FileAlignment, MajorOperatingSystemVersion, MinorOperatingSystemVersion, Win32VersionValue, SizeOfImage, SizeOfHeaders, CheckSum, Subsystem, DllCharacteristics, SizeOfStackReserve, SizeOfStackCommit, SizeOfHeapReserve, SizeOfHeapCommit, LoaderFlags, NumberOfRvaAndSizes, DataDirectory)); BOOST_DESCRIBE_STRUCT(IMAGE_DATA_DIRECTORY, (), (VirtualAddress, Size)) }; // namespace PE_STRUCTURE template <typename Attr> void copyBytesToStructInner(Attr const& attr); template <typename Element, size_t N> void copyBytesToStructInner(Element const (&arr)[N]); template <typename Base, class Md = boost::describe::describe_members<Base, boost::describe::mod_any_access>> void copyBytesToStruct(Base const& base) { boost::mp11::mp_for_each<Md>([&](auto attr) { copyBytesToStructInner(base.*attr.pointer); }); } template <typename Element, size_t N> void copyBytesToStructInner(Element const (&arr)[N]) { std::cout << __PRETTY_FUNCTION__ << " " << boost::typeindex::type_id<Element>().pretty_name() << std::endl; for (auto& el : arr) { copyBytesToStructInner(el); } } template <typename Attr> void copyBytesToStructInner(Attr const& attr) { // check if iterated type is struct, if it is then recursively call this function for it if constexpr (std::is_class_v<Attr>) { std::cout << __PRETTY_FUNCTION__ << " " << boost::typeindex::type_id<Attr>().pretty_name() << std::endl; copyBytesToStruct(attr); } else { // std::cout << "Handle manually " << boost::typeindex::type_id<Attr>().pretty_name() << std::endl; } } void loadPEFileFromBinary() { PE_STRUCTURE::ImageNtHeaders64 st; copyBytesToStruct(st); } int main() { loadPEFileFromBinary(); } 印刷 void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_FILE_HEADER] PE_STRUCTURE::IMAGE_FILE_HEADER void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_OPTIONAL_HEADER64] PE_STRUCTURE::IMAGE_OPTIONAL_HEADER64 void copyBytesToStructInner(const Element (&)[N]) [with Element = PE_STRUCTURE::IMAGE_DATA_DIRECTORY; long unsigned int N = 16] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY 或者,取消注释“手动处理”行:https://coliru.stacked-crooked.com/a/cc83adeeb89044c8 Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_FILE_HEADER] PE_STRUCTURE::IMAGE_FILE_HEADER Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_OPTIONAL_HEADER64] PE_STRUCTURE::IMAGE_OPTIONAL_HEADER64 Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Element (&)[N]) [with Element = PE_STRUCTURE::IMAGE_DATA_DIRECTORY; long unsigned int N = 16] PE_STRUCTURE::IMAGE_DATA_DIRECTORY void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int void copyBytesToStructInner(const Attr&) [with Attr = PE_STRUCTURE::IMAGE_DATA_DIRECTORY] PE_STRUCTURE::IMAGE_DATA_DIRECTORY Handle manually unsigned int Handle manually unsigned int

回答 1 投票 0

使用 swig 从 C++ 转换为 tcl 时,boost 序列化扩展类型信息的未定义符号

嗨,我正在使用 Swig 编写从 C++ 到 Tcl 的转换。编译很好,一切都很好,直到我加载生成的共享库。它给了我这样的错误。 无法加载文件“./

回答 1 投票 0

在Rcpp中,如何包含集群中安装的cpp包?

我尝试通过以下方式将 boost 包包含在 Rcpp 文件中: #包括 由于它安装在高性能计算集群的路线下,所以我

回答 1 投票 0

asio co_composed lambda函数可以捕获this指针吗?

我已阅读此问答。 C++20 协程的 Lambda 生命周期解释 如果我理解正确的话,如果 lambda 表达式用作协程,则带有捕获某些内容的 lambda 表达式是不安全的

回答 1 投票 0

boost::asio::experimental::co_composed lambda函数可以捕获这个指针吗?

我已阅读此问答。 C++20 协程的 Lambda 生命周期解释 如果我理解正确的话,如果 lambda 表达式用作协程,则带有捕获某些内容的 lambda 表达式是不安全的

回答 1 投票 0

为什么 Clang 尽管已添加到 PATH 却找不到 Boost 库?

我尝试在安装后将 Boost 库包含在我的 C++ 脚本中,但我通过智能感知收到以下错误消息: #包括 ...

回答 1 投票 0

boost asio tcp 连接重新连接并读取后没有收到数据

我正在使用 boost asio 连接到 TCP 服务器。 当我运行代码时,它在启动后工作正常。我发送请求并得到响应。 当我关闭 tcp 服务器(它是一个设备)时,我正在运行...

回答 1 投票 0

使用单个io_context并行运行多个超时进程

我尝试修改此处的示例并使进程并行运行,因为在我的用例中,进程在其生命周期的大部分时间里可能处于空闲状态,因此CPU资源可以更好

回答 1 投票 0

C++20 协程读/写 websocket

我想使用协程和 boost::asio 使 websocket 在单线程上运行。一个协程负责写入 (async_write),另一个协程负责读取 (async_...

回答 1 投票 0

使用单个io_context运行多个超时进程

我稍微更改了此处找到的示例,从单个 io_context 对象运行所有进程,该对象在 main 中定义,并传递给每个任务,从不同的线程运行。 我期待着...

回答 1 投票 0

C++11 中的 boost::thread_group?

C++11中有类似boost::thread_group的东西吗? 我只是想将我的程序从使用 boost:thread 移植到 C++11 线程,但找不到任何等效的东西。

回答 3 投票 0

在QT中创建成功的SSL握手的正确方法是什么?

我有以下三个文件:key.pem、cert.pem、ca.pem 和创建与我的服务器的 SSL 连接的工作代码。它是使用 boost 库创建的。 工作升压代码: ssl::上下文...

回答 4 投票 0

LINK:致命错误LNK1104:无法打开文件“libboost_serialization-vc142-mt-s-x64-1_80.lib”

平台:Windows 10、Visual Studio VC142 我在我的项目中使用 Boost 1.80.0。我已经构建了 Boost 并一直在使用 Container 等模块,没有出现任何问题,但是我尝试使用 Boost.Serialization ...

回答 1 投票 0

通过多索引容器增强 1.74 和 1.83 之间的序列化不兼容性

我正在将一组内容(使用 boost::multi_index_container 通过多个属性和 params 结构进行索引)序列化为二进制存档,我想对其进行反序列化。但是存档

回答 1 投票 0

boost中path::string()和path::generic_string()有什么区别?

boost::path::string() 和 boost::path::generic_string() 有什么区别,什么时候应该使用它们?

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.