Undefined reference to `boost :: filesystem :: detail :: get_current_path_api (std :: str

Merry Christmas, everyone.

Yesterday I load the Boost library. I am using CodeBlocks (with Mingw32 gcc V4.4.1) to compile it. Bjam command line: bjam install --toolset = gcc - prefix = "C: \ zjc \ PluginFramework \ boost_1_42_0" --build-type = complete. and it is successful. and I want to test the library. I write the code as follows:

 #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; } 

code>

one compilation error occurs: obj \ Debug \ main.o: C: \ zjc \ PluginFramework \ boost_1_42_0 \ include \ boost-1_42 \ boost \ filesystem \ operations.hpp | 530 | undefined link to `boost :: file system :: details :: get_current_path_api (std :: string &) '| I added the library to the linker options:

boost_system-mgw44-t-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-t-d-1_42.lib

macros:

BOOST_ALL_DYN_LINK

BOOST_SYSTEM_NO_LIB

BOOST_SYSTEM_NO_DEPRECATED

_DEBUG

_CONSOLE

BOOST_FILESYSTEM_VERSION

BOOST_FILESYSTEM_DYN_LINK

BOOST_LIB_DIAGNOSTIC

I am looking for an internet.the solution linking the boost filesystem.but library, I linked the library. My environment: Win 7 Home version, Code :: Blocks V 10.05.

+4
source share
1 answer

The Boost file system library is one of the libraries with the ability to link (and not just headers). Just add "boost_filesystem" before "boost_system".

If everything is configured correctly, you do not need to add libraries yourself: Do not set BOOST_SYSTEM_NO_LIB / BOOST_FILESYSTEM_NO_LIB if you really do not need it. If it is not installed, the headers should handle the dependencies for you.

Macros with BOOST_..._DYN_LINK will force the headers to try to link shared libraries (which you deactivated with other macros).

One more note: if you want to add libs manually. Do not mix them and add only one option that you need and choose the right one (for example, multi-threaded debugging "mt-d").

+10
source

Source: https://habr.com/ru/post/1387914/


All Articles