2012-12-13 72 views
3

我被困在試圖讓一些代碼使用POCO庫進行構建。與Poco Net鏈接錯誤

我得到如下當我嘗試建立

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

我缺少什麼連接?

(我應該說,我與Mac OS X上鐺編譯10.8.2

+0

也許你已經庫頭用於其他版本POCO的話庫在LD_LIBRARY_PATH(或不過這就是所謂的在Mac OS X)?或者你有POCO編譯爲32位的? – Yester

+1

只是檢查,POCO是建立Darwin64(我用自制安裝它),我有POCO唯一的標題是那些被安裝了,它的庫我試圖鏈接:( – em70

回答

3

我有同樣的問題。我發現改變的Xcode構建設置是非常有用的。 更改C++標準從libc庫++(LLVM C++標準庫支持C++ 11)到libstdC++(GNU C++標準庫),然後它會通過構建

+0

你是男人相同的版本! – heinob

3

我有同樣的問題,它對Leezi寫的很好,我使用的版本是1.4.6 。

什麼,我必須做更多的事情就是重新編譯波蘇庫(因爲它被編譯爲使用C++ 11的支持鐺):

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

的另一種方式,你可以做的是編譯波科庫,C++ 11的支持,但它是一個小有點複雜。 首先,我不得不修改基金會兩個源文件:

基金會/ 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> 

我修改建立/配置/達爾文 - 鐺文件太:

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項目,並建立了它或深入makefile文件裏面...... 我希望這幫助...

+0

感謝您發佈需要使用C++ 11支持構建的Poco構建配置更改。 – pmont