Overview
Features
Download
Documentation
Community
Add-Ons & Services

Support for BlackBerry Native SDK (Playbook) platform?

Please post support and help requests here.

Support for BlackBerry Native SDK (Playbook) platform?

Postby falcon4ever » 11 Mar 2012, 20:55

Hi!

With the release of PlayBook Tablet OS 2.0, RIM now allows developers to create apps or libs using the BlackBerry Native SDK (C/C++). Since I have been working on a handful of openFrameworks applications, this is great news. It means that the apps written for iOS/Android could possibly be ported to the PlayBook as well.

While iOS/Android support for openFrameworks already exist as an add-on, I'm currently trying to write one for the PlayBook as well.
( http://forum.openframeworks.cc/index.php/topic,9189.msg42786.html )

After reading these guides:
https://bdsc.webapps.blackberry.com/native/download
https://bdsc.webapps.blackberry.com/native/documentation/porting_overview_1970891_11.html

It didnt seem to hard to make it work (I actually managed to compile most of openFrameworks dependencies). The only part I'm struggling with is the POCO C++ lib.

While I managed to compile it after modifying the QNX build file that is supplied with the latest release (*.a files, both debug and release), it fails to work when it is included with in the openFrameworks test project:

Code: Select all
E:\porting\pocoplaybook\lib\libPocoFoundation.a(Environment.o): In function `Poco::EnvironmentImpl::nodeIdImpl(unsigned char (&) [6])':
Environment.cpp:(.text+0x190): undefined reference to `getifaddrs'
Environment.cpp:(.text+0x1fc): undefined reference to `freeifaddrs'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPResponse.o): In function `Poco::Net::HTTPResponse::getDate() const':
HTTPResponse.cpp:(.text+0x514): undefined reference to `Poco::DateTimeParser::parse(std::string const&, int&)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPCookie.o): In function `Poco::Net::HTTPCookie::HTTPCookie(Poco::Net::NameValueCollection const&)':
HTTPCookie.cpp:(.text+0x1234): undefined reference to `Poco::DateTimeParser::parse(std::string const&, int&)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPCookie.o): In function `Poco::Net::HTTPCookie::HTTPCookie(Poco::Net::NameValueCollection const&)':
HTTPCookie.cpp:(.text+0x1908): undefined reference to `Poco::DateTimeParser::parse(std::string const&, int&)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPClientSession.o): In function `Poco::Net::HTTPClientSession::sendRequest(Poco::Net::HTTPRequest&)':
HTTPClientSession.cpp:(.text+0x14c4): undefined reference to `Poco::CountingOutputStream::CountingOutputStream()'
HTTPClientSession.cpp:(.text+0x1528): undefined reference to `Poco::CountingOutputStream::~CountingOutputStream()'
HTTPClientSession.cpp:(.text+0x1644): undefined reference to `Poco::CountingOutputStream::CountingOutputStream()'
HTTPClientSession.cpp:(.text+0x1754): undefined reference to `Poco::CountingOutputStream::~CountingOutputStream()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPClientSession.o): In function `Poco::Net::HTTPClientSession::proxyAuthenticateImpl(Poco::Net::HTTPRequest&)':
HTTPClientSession.cpp:(.text+0x2928): undefined reference to `Poco::Base64Encoder::Base64Encoder(std::ostream&)'
HTTPClientSession.cpp:(.text+0x2950): undefined reference to `Poco::Base64EncoderIOS::close()'
HTTPClientSession.cpp:(.text+0x2ac8): undefined reference to `Poco::Base64Encoder::~Base64Encoder()'
HTTPClientSession.cpp:(.text+0x2dc8): undefined reference to `Poco::Base64Encoder::~Base64Encoder()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::~SocketImpl()':
SocketImpl.cpp:(.text+0xec8): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
SocketImpl.cpp:(.text+0xf00): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::~SocketImpl()':
SocketImpl.cpp:(.text+0xf54): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
SocketImpl.cpp:(.text+0xf84): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::~SocketImpl()':
SocketImpl.cpp:(.text+0xfd8): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o):SocketImpl.cpp:(.text+0x1008): more undefined references to `Poco::RefCountedObject::~RefCountedObject()' follow
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::SocketImpl(int)':
SocketImpl.cpp:(.text+0x1048): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::SocketImpl(int)':
SocketImpl.cpp:(.text+0x10bc): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::SocketImpl()':
SocketImpl.cpp:(.text+0x112c): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::SocketImpl()':
SocketImpl.cpp:(.text+0x11a0): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::receiveFrom(void*, int, Poco::Net::SocketAddress&, int)':
SocketImpl.cpp:(.text+0x2314): undefined reference to `recvfrom'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::receiveBytes(void*, int, int)':
SocketImpl.cpp:(.text+0x2484): undefined reference to `recv'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::initSocket(int, int, int)':
SocketImpl.cpp:(.text+0x2854): undefined reference to `socket'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::getRawOption(int, int, void*, unsigned int&)':
SocketImpl.cpp:(.text+0x2938): undefined reference to `getsockopt'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::setRawOption(int, int, void const*, unsigned int)':
SocketImpl.cpp:(.text+0x2a00): undefined reference to `setsockopt'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::peerAddress()':
SocketImpl.cpp:(.text+0x2adc): undefined reference to `getpeername'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::address()':
SocketImpl.cpp:(.text+0x2bc4): undefined reference to `getsockname'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::sendUrgent(unsigned char)':
SocketImpl.cpp:(.text+0x304c): undefined reference to `send'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::sendBytes(void const*, int, int)':
SocketImpl.cpp:(.text+0x3118): undefined reference to `send'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::sendTo(void const*, int, Poco::Net::SocketAddress const&, int)':
SocketImpl.cpp:(.text+0x3220): undefined reference to `sendto'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::shutdown()':
SocketImpl.cpp:(.text+0x32ec): undefined reference to `shutdown'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::shutdownSend()':
SocketImpl.cpp:(.text+0x33b0): undefined reference to `shutdown'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::shutdownReceive()':
SocketImpl.cpp:(.text+0x3474): undefined reference to `shutdown'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::listen(int)':
SocketImpl.cpp:(.text+0x3534): undefined reference to `listen'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::acceptConnection(Poco::Net::SocketAddress&)':
SocketImpl.cpp:(.text+0x3614): undefined reference to `accept'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::connect(Poco::Net::SocketAddress const&)':
SocketImpl.cpp:(.text+0x382c): undefined reference to `connect'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::bind(Poco::Net::SocketAddress const&, bool)':
SocketImpl.cpp:(.text+0x393c): undefined reference to `bind'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::connect(Poco::Net::SocketAddress const&, Poco::Timespan const&)':
SocketImpl.cpp:(.text+0x3a68): undefined reference to `connect'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::connectNB(Poco::Net::SocketAddress const&)':
SocketImpl.cpp:(.text+0x3d00): undefined reference to `connect'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `.LANCHOR0':
SocketImpl.cpp:(.data.rel.ro+0xa0): undefined reference to `typeinfo for Poco::RefCountedObject'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `global constructors keyed to _ZN4Poco3Net24HTTPFixedLengthStreamBufC2ERNS0_11HTTPSessionEiNSt5_IosbIiE9_OpenmodeE':
HTTPFixedLengthStream.cpp:(.text+0x1a4): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPFixedLengthStream.cpp:(.text+0x1d8): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPFixedLengthStream.cpp:(.text+0x214): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `Poco::Net::HTTPFixedLengthOutputStream::operator delete(void*)':
HTTPFixedLengthStream.cpp:(.text+0x264): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `Poco::Net::HTTPFixedLengthInputStream::operator delete(void*)':
HTTPFixedLengthStream.cpp:(.text+0x2bc): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `Poco::Net::HTTPFixedLengthOutputStream::operator new(unsigned int)':
HTTPFixedLengthStream.cpp:(.text+0x314): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `Poco::Net::HTTPFixedLengthInputStream::operator new(unsigned int)':
HTTPFixedLengthStream.cpp:(.text+0x368): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `global constructors keyed to _ZN4Poco3Net19HTTPHeaderStreamBufC2ERNS0_11HTTPSessionENSt5_IosbIiE9_OpenmodeE':
HTTPHeaderStream.cpp:(.text+0xdc): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPHeaderStream.cpp:(.text+0x110): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPHeaderStream.cpp:(.text+0x14c): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `Poco::Net::HTTPHeaderOutputStream::operator delete(void*)':
HTTPHeaderStream.cpp:(.text+0x19c): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `Poco::Net::HTTPHeaderInputStream::operator delete(void*)':
HTTPHeaderStream.cpp:(.text+0x1f4): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `Poco::Net::HTTPHeaderOutputStream::operator new(unsigned int)':
HTTPHeaderStream.cpp:(.text+0x24c): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `Poco::Net::HTTPHeaderInputStream::operator new(unsigned int)':
HTTPHeaderStream.cpp:(.text+0x2a0): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBufferAllocator.o): In function `global constructors keyed to _ZN4Poco3Net19HTTPBufferAllocator5_poolE':
HTTPBufferAllocator.cpp:(.text+0x38): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPBufferAllocator.cpp:(.text+0x7c): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBufferAllocator.o): In function `Poco::Net::HTTPBufferAllocator::deallocate(char*, int)':
HTTPBufferAllocator.cpp:(.text+0xc8): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBufferAllocator.o): In function `Poco::Net::HTTPBufferAllocator::allocate(int)':
HTTPBufferAllocator.cpp:(.text+0x11c): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `global constructors keyed to _ZN4Poco3Net13HTTPStreamBufC2ERNS0_11HTTPSessionENSt5_IosbIiE9_OpenmodeE':
HTTPStream.cpp:(.text+0x134): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPStream.cpp:(.text+0x168): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPStream.cpp:(.text+0x1a4): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `Poco::Net::HTTPOutputStream::operator delete(void*)':
HTTPStream.cpp:(.text+0x1f4): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `Poco::Net::HTTPInputStream::operator delete(void*)':
HTTPStream.cpp:(.text+0x24c): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `Poco::Net::HTTPOutputStream::operator new(unsigned int)':
HTTPStream.cpp:(.text+0x2a4): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `Poco::Net::HTTPInputStream::operator new(unsigned int)':
HTTPStream.cpp:(.text+0x2f8): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x1cc): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x264): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::~HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x388): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::~HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x474): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::~HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x558): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::open(Poco::URI const&)':
HTTPStreamFactory.cpp:(.text+0xc10): undefined reference to `Poco::NullOutputStream::NullOutputStream()'
HTTPStreamFactory.cpp:(.text+0xc20): undefined reference to `Poco::StreamCopier::copyStream(std::istream&, std::ostream&, unsigned int)'
HTTPStreamFactory.cpp:(.text+0xc38): undefined reference to `Poco::NullOutputStream::~NullOutputStream()'
HTTPStreamFactory.cpp:(.text+0xf04): undefined reference to `Poco::URIRedirection::URIRedirection(std::string const&)'
HTTPStreamFactory.cpp:(.text+0x1670): undefined reference to `Poco::NullOutputStream::~NullOutputStream()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::registerFactory()':
HTTPStreamFactory.cpp:(.text+0x1718): undefined reference to `Poco::URIStreamOpener::defaultOpener()'
HTTPStreamFactory.cpp:(.text+0x18f0): undefined reference to `Poco::URIStreamOpener::registerStreamFactory(std::string const&, Poco::URIStreamFactory*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory(std::string const&, unsigned short, std::string const&, std::string const&)':
HTTPStreamFactory.cpp:(.text+0x1a3c): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
HTTPStreamFactory.cpp:(.text+0x1fa4): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory(std::string const&, unsigned short)':
HTTPStreamFactory.cpp:(.text+0x20cc): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
HTTPStreamFactory.cpp:(.text+0x22d0): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory(std::string const&, unsigned short, std::string const&, std::string const&)':
HTTPStreamFactory.cpp:(.text+0x236c): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
HTTPStreamFactory.cpp:(.text+0x28d4): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory(std::string const&, unsigned short)':
HTTPStreamFactory.cpp:(.text+0x29fc): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
HTTPStreamFactory.cpp:(.text+0x2c00): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `.LANCHOR0':
HTTPStreamFactory.cpp:(.data.rel.ro+0x1c): undefined reference to `typeinfo for Poco::URIStreamFactory'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress()':
IPAddress.cpp:(.text+0xba8): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress()':
IPAddress.cpp:(.text+0xc3c): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress(void const*, unsigned int, unsigned int)':
IPAddress.cpp:(.text+0x19f8): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress(void const*, unsigned int)':
IPAddress.cpp:(.text+0x1d24): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress(void const*, unsigned int, unsigned int)':
IPAddress.cpp:(.text+0x20b4): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o):IPAddress.cpp:(.text+0x23e0): more undefined references to `Poco::RefCountedObject::RefCountedObject()' follow
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddressImpl::~IPAddressImpl()':
IPAddress.cpp:(.text._ZN4Poco3Net13IPAddressImplD0Ev[_ZN4Poco3Net13IPAddressImplD0Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddressImpl::~IPAddressImpl()':
IPAddress.cpp:(.text._ZN4Poco3Net13IPAddressImplD1Ev[_ZN4Poco3Net13IPAddressImplD1Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPv4AddressImpl::~IPv4AddressImpl()':
IPAddress.cpp:(.text._ZN4Poco3Net15IPv4AddressImplD0Ev[_ZN4Poco3Net15IPv4AddressImplD0Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPv4AddressImpl::~IPv4AddressImpl()':
IPAddress.cpp:(.text._ZN4Poco3Net15IPv4AddressImplD1Ev[_ZN4Poco3Net15IPv4AddressImplD1Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPv4AddressImpl::clone() const':
IPAddress.cpp:(.text._ZNK4Poco3Net15IPv4AddressImpl5cloneEv[_ZNK4Poco3Net15IPv4AddressImpl5cloneEv]+0x34): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o):(.data.rel.ro._ZTIN4Poco3Net13IPAddressImplE[_ZTIN4Poco3Net13IPAddressImplE]+0x8): undefined reference to `typeinfo for Poco::RefCountedObject'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::resolveService(std::string const&)':
SocketAddress.cpp:(.text+0x298): undefined reference to `getservbyname'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::SocketAddress()':
SocketAddress.cpp:(.text+0x348): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::SocketAddress()':
SocketAddress.cpp:(.text+0x3f8): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::SocketAddress(sockaddr const*, unsigned int)':
SocketAddress.cpp:(.text+0x169c): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::SocketAddress(sockaddr const*, unsigned int)':
SocketAddress.cpp:(.text+0x18e8): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::init(Poco::Net::IPAddress const&, unsigned short)':
SocketAddress.cpp:(.text+0x19dc): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddressImpl::~SocketAddressImpl()':
SocketAddress.cpp:(.text._ZN4Poco3Net17SocketAddressImplD0Ev[_ZN4Poco3Net17SocketAddressImplD0Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddressImpl::~SocketAddressImpl()':
SocketAddress.cpp:(.text._ZN4Poco3Net17SocketAddressImplD1Ev[_ZN4Poco3Net17SocketAddressImplD1Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::IPv4SocketAddressImpl::~IPv4SocketAddressImpl()':
SocketAddress.cpp:(.text._ZN4Poco3Net21IPv4SocketAddressImplD0Ev[_ZN4Poco3Net21IPv4SocketAddressImplD0Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::IPv4SocketAddressImpl::~IPv4SocketAddressImpl()':
SocketAddress.cpp:(.text._ZN4Poco3Net21IPv4SocketAddressImplD1Ev[_ZN4Poco3Net21IPv4SocketAddressImplD1Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o):(.data.rel.ro._ZTIN4Poco3Net17SocketAddressImplE[_ZTIN4Poco3Net17SocketAddressImplE]+0x8): undefined reference to `typeinfo for Poco::RefCountedObject'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `global constructors keyed to _ZN4Poco3Net20HTTPChunkedStreamBufC2ERNS0_11HTTPSessionENSt5_IosbIiE9_OpenmodeE':
HTTPChunkedStream.cpp:(.text+0x10c): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPChunkedStream.cpp:(.text+0x140): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPChunkedStream.cpp:(.text+0x17c): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `Poco::Net::HTTPChunkedOutputStream::operator delete(void*)':
HTTPChunkedStream.cpp:(.text+0x1cc): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `Poco::Net::HTTPChunkedInputStream::operator delete(void*)':
HTTPChunkedStream.cpp:(.text+0x224): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `Poco::Net::HTTPChunkedOutputStream::operator new(unsigned int)':
HTTPChunkedStream.cpp:(.text+0x27c): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `Poco::Net::HTTPChunkedInputStream::operator new(unsigned int)':
HTTPChunkedStream.cpp:(.text+0x2d0): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPDigestCredentials.o): In function `(anonymous namespace)::digest(Poco::DigestEngine&, std::string const&, std::string const&, std::string const&, std::string const&, std::string const&, std::string const&)':
HTTPDigestCredentials.cpp:(.text+0xe8): undefined reference to `Poco::DigestEngine::digestToHex(std::vector<unsigned char, std::allocator<unsigned char> > const&)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPDigestCredentials.o): In function `Poco::Net::HTTPDigestCredentials::createNonce()':
HTTPDigestCredentials.cpp:(.text+0xce8): undefined reference to `Poco::MD5Engine::MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0xd50): undefined reference to `Poco::MD5Engine::digest()'
HTTPDigestCredentials.cpp:(.text+0xd5c): undefined reference to `Poco::DigestEngine::digestToHex(std::vector<unsigned char, std::allocator<unsigned char> > const&)'
HTTPDigestCredentials.cpp:(.text+0xd64): undefined reference to `Poco::MD5Engine::~MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0xdb8): undefined reference to `Poco::MD5Engine::~MD5Engine()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPDigestCredentials.o): In function `Poco::Net::HTTPDigestCredentials::verifyAuthParams(Poco::Net::HTTPRequest const&, Poco::Net::HTTPAuthenticationParams const&) const':
HTTPDigestCredentials.cpp:(.text+0x1304): undefined reference to `Poco::MD5Engine::MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0x16e8): undefined reference to `Poco::MD5Engine::~MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0x1a6c): undefined reference to `Poco::MD5Engine::~MD5Engine()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPDigestCredentials.o): In function `Poco::Net::HTTPDigestCredentials::updateAuthParams(Poco::Net::HTTPRequest const&)':
HTTPDigestCredentials.cpp:(.text+0x1c5c): undefined reference to `Poco::MD5Engine::MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0x2024): undefined reference to `Poco::MD5Engine::~MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0x2414): undefined reference to `Poco::MD5Engine::~MD5Engine()'
E:\porting\pocoplaybook\lib\libPocoNet.a(DNS.o): In function `Poco::Net::DNS::lastError()':
DNS.cpp:(.text+0x130): undefined reference to `__h_errno'
E:\porting\pocoplaybook\lib\libPocoNet.a(DNS.o): In function `Poco::Net::DNS::hostByAddress(Poco::Net::IPAddress const&)':
DNS.cpp:(.text+0x56c): undefined reference to `getnameinfo'
DNS.cpp:(.text+0x5b0): undefined reference to `getaddrinfo'
DNS.cpp:(.text+0x5d0): undefined reference to `freeaddrinfo'
E:\porting\pocoplaybook\lib\libPocoNet.a(DNS.o): In function `Poco::Net::DNS::hostByName(std::string const&)':
DNS.cpp:(.text+0x7cc): undefined reference to `getaddrinfo'
DNS.cpp:(.text+0x7ec): undefined reference to `freeaddrinfo'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBasicCredentials.o): In function `Poco::Net::HTTPBasicCredentials::authenticate(Poco::Net::HTTPRequest&)':
HTTPBasicCredentials.cpp:(.text+0xc80): undefined reference to `Poco::Base64Encoder::Base64Encoder(std::ostream&)'
HTTPBasicCredentials.cpp:(.text+0xc88): undefined reference to `Poco::Base64EncoderIOS::rdbuf()'
HTTPBasicCredentials.cpp:(.text+0xc90): undefined reference to `Poco::Base64EncoderBuf::setLineLength(int)'
HTTPBasicCredentials.cpp:(.text+0xe70): undefined reference to `Poco::Base64EncoderIOS::close()'
HTTPBasicCredentials.cpp:(.text+0xfe4): undefined reference to `Poco::Base64Encoder::~Base64Encoder()'
HTTPBasicCredentials.cpp:(.text+0x14e4): undefined reference to `Poco::Base64Encoder::~Base64Encoder()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBasicCredentials.o): In function `Poco::Net::HTTPBasicCredentials::parseAuthInfo(std::string const&)':
HTTPBasicCredentials.cpp:(.text+0x1c20): undefined reference to `Poco::Base64Decoder::Base64Decoder(std::istream&)'
HTTPBasicCredentials.cpp:(.text+0x22a8): undefined reference to `Poco::Base64Decoder::~Base64Decoder()'
HTTPBasicCredentials.cpp:(.text+0x25e0): undefined reference to `Poco::Base64Decoder::~Base64Decoder()'


To build Poco, I've used the following settings:

Configure:
Code: Select all
./configure --config=QNX --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --no-tests --no-samples --static --prefix=/home/falcon4ever/pocoplaybook


And modified the QNX file to this:
Code: Select all
#
# $Id: //poco/1.4/build/config/QNX#3 $
#
# QNX
#
# Make settings for QNX Neutrino 6.3.2 or later.
# For cross-builds, or if the default compiler version
# selected by the script is wrong, the make variable
# CCVER can be overridden:
# make CCVER=4.2.4,gcc_ntox86
#

#
# General Settings
#
#LINKMODE ?= SHARED
LINKMODE ?= STATIC
#
# Define Tools
#
#ifndef CCVER
#QNXREL = $(shell uname -r)
#ifeq ($(QNXREL),6.3.2)
#CCVER   = 3.3.5,gcc_ntox86
#else
#ifeq ($(QNXREL),6.4.0)
#CCVER   = 4.2.4,gcc_ntox86
#else
#ifeq ($(QNXREL),6.4.1)
#CCVER   = 4.3.3,gcc_ntox86
#else
#CCVER   = 4.4.2,gcc_ntox86
#endif
#endif
#endif
#endif
#CC      = qcc -V$(CCVER)
#CXX     = QCC -V$(CCVER)
#LINK    = $(CXX) -V$(CCVER)
#LIB     = ar -cr
#RANLIB  = ranlib

CCVER   = 4.4.2,gcc_ntoarmv7le_cpp
CC     = $(QNX_HOST)/usr/bin/qcc -V4.4.2,gcc_ntoarmv7le
CXX     = $(QNX_HOST)/usr/bin/qcc -V4.4.2,gcc_ntoarmv7le_cpp
LINK    = $(CXX) -V$(CCVER)
#LD   = $(QNX_HOST)/usr/bin/ntoarmv7-ld
AS   = $(QNX_HOST)/usr/bin/qcc -V4.4.2,gcc_ntoarmv7le_cpp
LD   = $(QNX_HOST)/usr/bin/qcc -V4.4.2,gcc_ntoarmv7le_cpp
LIB   = $(QNX_HOST)/usr/bin/ntoarmv7-ar -cr
RANLIB  = $(QNX_HOST)/usr/bin/ntoarmv7-ranlib

SHLIB   = $(CXX) -shared -Wl,-soname,$(notdir $@) -o $@
SHLIBLN = $(POCO_BASE)/build/script/shlibln
STRIP   = $(CROSSENV)-strip
DEP     = $(POCO_BASE)/build/script/makedepend.qcc
SHELL   = sh
RM      = rm -rf
CP      = cp
MKDIR   = mkdir -p

#
# Extension for Shared Libraries
#
SHAREDLIBEXT     = .so.$(target_version)
SHAREDLIBLINKEXT = .so

#
# Compiler and Linker Flags
#
CFLAGS          =
CFLAGS32        =
CFLAGS64        =
CXXFLAGS        = -D__PLAYBOOK__ -D__QNXNTO__
CXXFLAGS32      =
CXXFLAGS64      =
LINKFLAGS       =
LINKFLAGS32     =
LINKFLAGS64     =
STATICOPT_CC    =
STATICOPT_CXX   =
STATICOPT_LINK  = -static
SHAREDOPT_CC    = -fpic
SHAREDOPT_CXX   = -fpic
SHAREDOPT_LINK  = -Wl,-rpath,$(LIBPATH)
DEBUGOPT_CC     = -D_FORTIFY_SOURCE=2 -DUSING_GL11 -c -O0 -g -fstack-protector-all -D_DEBUG
DEBUGOPT_CXX    = -D_FORTIFY_SOURCE=2 -DUSING_GL11 -c -O0 -g -fstack-protector-all -D_DEBUG
DEBUGOPT_LINK   = -g
RELEASEOPT_CC   = -D_FORTIFY_SOURCE=2 -c -O2 -fstack-protector-all -fPIE -frecord-gcc-switches -DNDEBUG
RELEASEOPT_CXX  = -D_FORTIFY_SOURCE=2 -c -O2 -fstack-protector-all -fPIE -frecord-gcc-switches -DNDEBUG
RELEASEOPT_LINK = -O2

#DEBUGOPT_CC     = -g -D_DEBUG
#DEBUGOPT_CXX    = -g -D_DEBUG
#DEBUGOPT_LINK   = -g
#RELEASEOPT_CC   = -O2 -DNDEBUG
#RELEASEOPT_CXX  = -O2 -DNDEBUG
#RELEASEOPT_LINK = -O2

#
# System Specific Flags
#
SYSFLAGS = -D_QNX_SOURCE

#
# System Specific Libraries
#
SYSLIBS  = -lm -lsocket


The original:
Code: Select all
#
# $Id: //poco/1.4/build/config/QNX#3 $
#
# QNX
#
# Make settings for QNX Neutrino 6.3.2 or later.
# For cross-builds, or if the default compiler version
# selected by the script is wrong, the make variable
# CCVER can be overridden:
# make CCVER=4.2.4,gcc_ntox86
#

#
# General Settings
#
LINKMODE ?= SHARED

#
# Define Tools
#
ifndef CCVER
QNXREL = $(shell uname -r)
ifeq ($(QNXREL),6.3.2)
CCVER   = 3.3.5,gcc_ntox86
else
ifeq ($(QNXREL),6.4.0)
CCVER   = 4.2.4,gcc_ntox86
else
ifeq ($(QNXREL),6.4.1)
CCVER   = 4.3.3,gcc_ntox86
else
CCVER   = 4.4.2,gcc_ntox86
endif
endif
endif
endif
CC      = qcc -V$(CCVER)
CXX     = QCC -V$(CCVER)
LINK    = $(CXX) -V$(CCVER)
LIB     = ar -cr
RANLIB  = ranlib
SHLIB   = $(CXX) -shared -Wl,-soname,$(notdir $@) -o $@
SHLIBLN = $(POCO_BASE)/build/script/shlibln
STRIP   =
DEP     = $(POCO_BASE)/build/script/makedepend.qcc
SHELL   = sh
RM      = rm -rf
CP      = cp
MKDIR   = mkdir -p

#
# Extension for Shared Libraries
#
SHAREDLIBEXT     = .so.$(target_version)
SHAREDLIBLINKEXT = .so

#
# Compiler and Linker Flags
#
CFLAGS          =
CFLAGS32        =
CFLAGS64        =
CXXFLAGS        =
CXXFLAGS32      =
CXXFLAGS64      =
LINKFLAGS       =
LINKFLAGS32     =
LINKFLAGS64     =
STATICOPT_CC    =
STATICOPT_CXX   =
STATICOPT_LINK  = -static
SHAREDOPT_CC    = -fpic
SHAREDOPT_CXX   = -fpic
SHAREDOPT_LINK  = -Wl,-rpath,$(LIBPATH)
DEBUGOPT_CC     = -g -D_DEBUG
DEBUGOPT_CXX    = -g -D_DEBUG
DEBUGOPT_LINK   = -g
RELEASEOPT_CC   = -O2 -DNDEBUG
RELEASEOPT_CXX  = -O2 -DNDEBUG
RELEASEOPT_LINK = -O2

#
# System Specific Flags
#
SYSFLAGS = -D_QNX_SOURCE

#
# System Specific Libraries
#
SYSLIBS  = -lm -lsocket



I'm not really an expert with Linux/QNX makefiles, so pardon the mess I made in the config file.

Note: I mainly develop in windows, but as the documents of poco mentioned, I used a Linux machine (Ubuntu 11.10) with the BlackBerry native SDK installed to compile Poco.
falcon4ever
 
Posts: 2
Joined: 11 Mar 2012, 20:37

Re: Support for BlackBerry Native SDK (Playbook) platform?

Postby guenter » 13 Mar 2012, 12:42

I suspect this is just a matter of specifying libraries in the right order to the linker. Unlike the Visual C++ linker, most other linkers expect (static) libraries to be given in the right order with regards to their dependencies. For POCO, this would mean:
Code: Select all
-lPocoNet -lPocoUtil -lPocoXML -lPocoFoundation
guenter
 
Posts: 1092
Joined: 11 Jul 2006, 16:27
Location: Austria

Re: Support for BlackBerry Native SDK (Playbook) platform?

Postby falcon4ever » 13 Mar 2012, 16:22

guenter wrote:I suspect this is just a matter of specifying libraries in the right order to the linker. Unlike the Visual C++ linker, most other linkers expect (static) libraries to be given in the right order with regards to their dependencies. For POCO, this would mean:
Code: Select all
-lPocoNet -lPocoUtil -lPocoXML -lPocoFoundation


Thanks for your help guenter!

It was indeed a problem with the order of the dependencies. I changed it in QNX Momentics IDE (and also add -lsocket) and all the errors went away. I actually managed to get openFrameworks working now on my PlayBook as well :)

Image
falcon4ever
 
Posts: 2
Joined: 11 Mar 2012, 20:37


Return to Support

Who is online

Users browsing this forum: No registered users and 2 guests