您可以使用宏来创建一些代码,如下所示:
std::cout << "Using Boost "
<< BOOST_VERSION / 100000 << "." // maj. version
<< BOOST_VERSION / 100 % 1000 << "." // min. version
<< BOOST_VERSION % 100 // patch version
<< std::endl;
这适用于boost 1.51.x及更高版本.不确定这是否是您正在寻找的,我会继续前进,看看是否有办法以更优雅的方式从当前加载的dll中获取它.
附录:
要查找运行时版本:
在查看Boost系统之后,看起来你能找到的最简单的方法就是拥有平台相关代码,这些代码在编译时用来制作不同版本的可执行文件.
对于Windows:
你需要使用GetFileVersionInfoEx API或GetFileVersionInfo API查询DLL的版本,你还需要考虑操作系统是32位还是64位,所以这里有一些可能有用的代码:
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS IsWow64ProcessFunc;
BOOL is64BitOS()
{
BOOL retval= FALSE;
// need to check if the OS is 64 bit, and we cant therefore indiscrimately call the 64 bit function