大家圣诞快乐。
昨天我下载了Boost库。我使用CodeBlocks(与Mingw32 gcc V4.4.1一起使用)
进行编译。 bjam命令行是:
bjam install --toolset = gcc--prefix =“C:\zjc\PluginFramework\boost_1_42_0” --build-type = complete。
而且成功了。
我想测试图书馆。我写一些代码如下:
#include <stdlib.h>
#include <iostream>
using std::cout;
using std::wcout;
using std::endl;
#include <string>
using std::string;
using std::wstring;
#include <boost/algorithm/string.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/format.hpp>
int main(int argc, char* argv[])
{
// ANSI character format
cout << boost::format( "%1% %2%" ) % "Hell" % "Low" <<endl;
string s1 = boost::str( boost::format( "%2% %1%" ) % "Hell" % "Low" );
cout << s1 << endl;
// UNICODE character format
wcout << boost::wformat( L"%s %X" ) % L"-1 is" % -1 << endl;
wstring s2 = boost::str( boost::wformat( L"%2$s %1$.2f" ) % 3.141592 % L"Version" );
wcout << s2 << endl;
// get the path of application(ANSI character set), note:boost::filesystem::path
string AnsiPath = boost::filesystem::initial_path<boost::filesystem::path>().string();
cout<<AnsiPath<<endl;
// get the path of application(unicode character set), note:boost::filesystem::wpath
wstring UnicodePath = boost::filesystem::initial_path<boost::filesystem::wpath>().string();
wcout<<UnicodePath<<endl;
system("PAUSE");
return 0;
}
发生一个编译错误:obj\Debug\main.o:C:\zjc\PluginFramework\boost_1_42_0\include\boost-1_42\boost\filesystem\operations.hpp | 530 |未定义对`boost::filesystem::detail的引用: :get_current_path_api(std::string&)'|
我在链接器选项中添加了库:
boost_system-mgw44-mt-d-1_42.lib
libboost_system-mgw44-sd-1_42.lib
boost_system-mgw44-d.lib
boost_system-mgw44-d-1_42.lib
boost_system-mgw44-mt-d-1_42.lib
宏:
BOOST_ALL_DYN_LINK
BOOST_SYSTEM_NO_LIB
BOOST_SYSTEM_NO_DEPRECATED
_DEBUG
_安慰
BOOST_FILESYSTEM_VERSION
BOOST_FILESYSTEM_DYN_LINK
BOOST_LIB_DIAGNOSTIC
我在网上搜索。解决方案是链接boost文件系统库。但是我已经链接了库。我的环境:Win 7家庭版,代码:: Blocks V 10.05。
最佳答案
Boost文件系统库是其中包含的可链接(而非仅 header )库之一。只需在“boost_system”之前添加“boost_filesystem”。
如果一切都正确设置,则不必自己添加库:
除非确实需要,否则不要设置BOOST_SYSTEM_NO_LIB
/BOOST_FILESYSTEM_NO_LIB
。如果未设置,则标题应为您处理依赖项。
具有BOOST_..._DYN_LINK
的宏将导致 header 尝试链接共享库(已使用其他宏将其停用)。
请注意:如果您想手动添加库。不要混合使用它们,而只添加每种所需的变体,然后选择正确的一种(例如,多线程调试“mt-d”)。