2011-12-25 3 views
4

С Рождеством, все.неопределенная ссылка на `повышающего :: файловая система :: подробно :: get_current_path_api (станд :: ул

Вчера я загрузить библиотеку 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-т-д-1_42.lib

libboost_system-mgw44-сд-1_42.lib

boost_system-mgw44-d.lib

boost_system-mgw44-д-1_42.lib

boost_system-mgw44-т-д-1_42.lib

макросы:

BOOST_ALL_DYN_LINK

BOOST_SYSTEM_NO_LIB

BOOST_SYSTEM_NO_DEPRECATED

_DEBUG

_CONSOLE

BOOST_FILESYSTEM_VERSION

BOOST_FILESYSTEM_DYN_LINK

BOOST_LIB_DIAGNOSTIC

Я ищу решение Internet.The связывает подпиточную файловую систему library.but я связала библиотеку. Моя среда: Win 7 Домашняя версия, Code :: Blocks V 10.05.

ответ

10

Библиотека файловой системы Boost является одной из связанных библиотек (и не только заголовков). Просто добавьте «boost_filesystem» перед «boost_system».

Если все настроено правильно, вам не нужно добавлять библиотеки самостоятельно: Не устанавливайте BOOST_SYSTEM_NO_LIB/BOOST_FILESYSTEM_NO_LIB, если вам действительно не нужно. Если он не установлен, заголовки должны обрабатывать зависимости для вас.

Макросы с BOOST_..._DYN_LINK заставят заголовки попытаться связать разделяемые библиотеки (которые вы дезактивировали с помощью других макросов).

Просто еще одно примечание. Если вы хотите добавить libs вручную. Не смешивайте их и добавляйте только один вариант, который вам нужен, и выбирайте правильный (например, многопоточный отладочный «mt-d»).

Смежные вопросы