Ошибка связи с Poco Net

Я застрял, пытаясь получить код для сборки с использованием библиотек POCO.

Я получаю следующее, когда пытаюсь построить

Undefined symbols for architecture x86_64:
"Poco::Net::SocketAddress::SocketAddress(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned short)", referenced from:
.....
ld: symbol(s) not found for architecture x86_64

Теперь вот подвох: я связываюсь с -lPocoFoundation -lPocoNet -lPocoUtil

Что мне не хватает?

(Должен сказать, что я компилирую с помощью clang на Mac OS X 10.8.2

3

Решение

У меня та же проблема. Я обнаружил, что изменение настроек сборки xcode полезно.
Измените стандартную библиотеку C ++ с libc ++ (стандартная библиотека LLVM C ++ с поддержкой C ++ 11) на libstdc ++ (стандартная библиотека GNU C ++). Тогда это пройдет строительство.

3

Другие решения

У меня была та же самая проблема, и она прекрасно работала для меня, что написал Лизи. Я использую версию 1.4.6.

Единственное, что мне нужно было сделать — это снова скомпилировать библиотеку Poco (потому что она была скомпилирована для clang с поддержкой C ++ 11):

./configure --config=Darwin64-gcc
make
sudo make install

Другой способ, который вы можете сделать, — это скомпилировать библиотеку Poco с поддержкой C ++ 11, но это немного сложно.
Сначала мне пришлось изменить два исходных файла в Foundation:

Фонд / SRC / NumberParser.cpp:

127c127
<   return std::sscanf(s.c_str(), "%"I64_FMT"d%c", &value, &temp) == 1;
---
>   return std::sscanf(s.c_str(), "%" I64_FMT "d%c", &value, &temp) == 1;
144c144
<   return std::sscanf(s.c_str(), "%"I64_FMT"u%c", &value, &temp) == 1;
---
>   return std::sscanf(s.c_str(), "%" I64_FMT "u%c", &value, &temp) == 1;
161c161
<   return std::sscanf(s.c_str(), "%"I64_FMT"x%c", &value, &temp) == 1;
---
>   return std::sscanf(s.c_str(), "%" I64_FMT "x%c", &value, &temp) == 1;

Фонд / SRC / DirectoryWatcher.cpp:

51a52
> #include <unistd.h>

Я модифицировал строить / Config / Darwin-лязг файл тоже:

55,56c55,56
< CXXFLAGS        = $(ARCHFLAGS) -Wall -Wno-sign-compare
< LINKFLAGS       = $(ARCHFLAGS)
---
> CXXFLAGS        = $(ARCHFLAGS) -Wall -Wno-sign-compare -std=c++11 -stdlib=libc++
> LINKFLAGS       = $(ARCHFLAGS) -stdlib=libc++
80c80
< SYSLIBS  = -ldl
---
> SYSLIBS  = -ldl -lstdc++

Мне нужно было только для статических библиотек, поэтому я только скомпилировал это:

./configure --static --omit=Data --config=Darwin64-clang --poquito -no-tests -no-samples -no-shared
make clean
make
sudo make install

Если вам тоже нужны примеры и тесты, то я думаю, что вы должны сделать проект xcode и настроить его или углубиться в make-файлы …
Я надеюсь, что это поможет …

3

По вопросам рекламы [email protected]