C++ Poco网络的链接错误

C++ Poco网络的链接错误,c++,xcode,linker,poco-libraries,C++,Xcode,Linker,Poco Libraries,我一直在尝试使用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)", ref

我一直在尝试使用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
架构x86_64的未定义符号: “Poco::Net::SocketAddress::SocketAddress(std:_1::basic_string const&,unsigned short)”,引用自: ..... ld:找不到架构x86_64的符号 现在有一个问题:我正在链接-lPocoFoundation-lPocoNet-lpocutil

我错过了什么


(我应该说我是在Mac OS X 10.8.2上用clang编译的,我也有同样的问题。我发现更改xcode构建设置很有用。
将LC++标准库从LBC+ +(LVVM C++标准库,C++ 11支持)改为LIbSTDC++(GNU C++标准库),然后通过BASE。

< P>我遇到了同样的问题,对Leezi来说,这是很好的。我使用的是版本<强> 1.4.6. < /St>>/P> 我唯一需要做的就是再次编译Poco库(因为它是为C++11支持的clang而编译的):

另一种方法是使用C++11支持编译Poco库,但这有点复杂。 首先,我必须修改Foundation中的两个源文件:

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;
51a52
> #include <unistd.h>
如果您也需要样本和测试,那么我认为您应该创建一个xcode项目并进行设置,或者深入到makefile中。。。
我希望这有帮助…

也许你有其他版本POCO的库头,然后在LD_library_PATH下有库(或者在Mac OS X上如何称呼它)?或者你有32位的POCO编译?刚刚检查过,POCO是为Darwin64构建的(我用自制软件安装它)我仅有的POCO头文件是为同一版本安装的,我正在尝试链接这些版本的库:(感谢您发布POCO构建配置更改,这些更改需要使用C++11支持进行构建。
51a52
> #include <unistd.h>
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