我有一个C ++ / CLI命令行客户端,我正在尝试导入本机C ++库,而后者又有#include <boost/asio.hpp>
。
当我尝试导入时,我收到以下错误:
2>C:\boost_1_54_0\boost/asio/generic/detail/endpoint.hpp(27): error C2059: syntax error : 'generic'
2>C:\boost_1_54_0\boost/asio/generic/detail/endpoint.hpp(27): error C2143: syntax error : missing ';' before '{'
2>C:\boost_1_54_0\boost/asio/generic/detail/endpoint.hpp(27): error C2447: '{' : missing function header (old-style formal list?)
2>C:\boost_1_54_0\boost/asio/generic/detail/impl/endpoint.ipp(32): error C2059: syntax error : 'generic'
包含必须位于静态lib的标题中,因为它们是成员变量。
那么从static / native lib导入和使用这些类的最简单的选项是什么?
答案 0 :(得分:2)
这个问题出现在boost trac上,你可以找到它here。解决方案(Michael Rasmussen礼貌)暂时就是这样做
#ifdef __cplusplus_cli
#define generic __identifier(generic)
#endif>
#include <boost/filesystem.hpp>
#ifdef __cplusplus_cli
#undef generic
#endif
并包含你的boost包含,这些ifdefs中存在泛型符号的问题。
编辑:我错过了关于你的库是静态库的一点,你可能想要使用动态增强库,这可以避免定义多个符号的问题。使用BOOST_ALL_DYN_LINK
预处理器定义来改为使用boost dlls。