Travis Xenial and OF

I know I’ve seen this problem before but I can’t recall what the problem was.
I also know it is advised to run OF on trusty on Travis. However because of SSL issues I’ve switched to Xenial. However with Poco some trouble arises of undefined references:

g++ -o bin/NatNet2OSCbridge_debug obj/linux64/Debug/src/main.o obj/linux64/Debug/src/themes.o obj/linux64/Debug/src/uiWidgets.o obj/linux64/Debug/src/ect_helpers.o obj/linux64/Debug/src/ofxTextInputField.o obj/linux64/Debug/src/ofApp.o obj/linux64/Debug/src/ofxTextButton.o obj/linux64/Debug/src/client.o obj/linux64/Debug/src/ofpy.o ../../../addons/obj/linux64/Debug/ofxImGui/src/EngineOpenGLES.o ../../../addons/obj/linux64/Debug/ofxImGui/src/EngineVk.o ../../../addons/obj/linux64/Debug/ofxImGui/src/Helpers.o ../../../addons/obj/linux64/Debug/ofxImGui/src/Gui.o ../../../addons/obj/linux64/Debug/ofxImGui/src/ofxImGuiLoggerChannel.o ../../../addons/obj/linux64/Debug/ofxImGui/src/DefaultTheme.o ../../../addons/obj/linux64/Debug/ofxImGui/src/BaseEngine.o ../../../addons/obj/linux64/Debug/ofxImGui/src/EngineGLFW.o ../../../addons/obj/linux64/Debug/ofxImGui/libs/imgui/src/imgui_demo.o ../../../addons/obj/linux64/Debug/ofxImGui/libs/imgui/src/imgui_draw.o ../../../addons/obj/linux64/Debug/ofxImGui/libs/imgui/src/imgui.o ../../../addons/obj/linux64/Debug/ofxImGui/libs/imgui/src/imgui_widgets.o ../../../addons/obj/linux64/Debug/ofxNatNet/src/ofxNatNet.o ../../../addons/obj/linux64/Debug/ofxOsc/src/ofxOscMessage.o ../../../addons/obj/linux64/Debug/ofxOsc/src/ofxOscSender.o ../../../addons/obj/linux64/Debug/ofxOsc/src/ofxOscBundle.o ../../../addons/obj/linux64/Debug/ofxOsc/src/ofxOscParameterSync.o ../../../addons/obj/linux64/Debug/ofxOsc/src/ofxOscReceiver.o ../../../addons/obj/linux64/Debug/ofxOsc/libs/oscpack/src/ip/posix/NetworkingUtils.o ../../../addons/obj/linux64/Debug/ofxOsc/libs/oscpack/src/ip/posix/UdpSocket.o ../../../addons/obj/linux64/Debug/ofxOsc/libs/oscpack/src/ip/IpEndpointName.o ../../../addons/obj/linux64/Debug/ofxOsc/libs/oscpack/src/osc/OscTypes.o ../../../addons/obj/linux64/Debug/ofxOsc/libs/oscpack/src/osc/OscOutboundPacketStream.o ../../../addons/obj/linux64/Debug/ofxOsc/libs/oscpack/src/osc/OscReceivedElements.o ../../../addons/obj/linux64/Debug/ofxOsc/libs/oscpack/src/osc/OscPrintReceivedElements.o ../../../addons/obj/linux64/Debug/ofxPoco/src/ofxXmlPoco.o ../../../addons/obj/linux64/Debug/ofxXmlSettings/src/ofxXmlSettings.o ../../../addons/obj/linux64/Debug/ofxXmlSettings/libs/tinyxml.o ../../../addons/obj/linux64/Debug/ofxXmlSettings/libs/tinyxmlparser.o ../../../addons/obj/linux64/Debug/ofxXmlSettings/libs/tinyxmlerror.o ../../../libs/openFrameworksCompiled/lib/linux64/libopenFrameworksDebug.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoNetSSL.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoNet.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoCrypto.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoUtil.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoJSON.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoXML.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoFoundation.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoEncodings.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoZip.a /home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoRedis.a -Wl,-rpath=./libs:./bin/libs -Wl,--as-needed -Wl,--gc-sections -fuse-ld=gold -L/home/travis/openFrameworks/apps/devApps/NatNet2OSCbridge/bin/python/lib/python3.7/config-3.7m-x86_64-linux-gnu -L/home/travis/openFrameworks/apps/devApps/NatNet2OSCbridge/bin/python/lib -lpython3.7m -lcrypt -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -L../../../libs/fmodex/lib/linux64/ -lfmodex -lcrypto -lssl ../../../libs/kiss/lib/linux64/libkiss.a ../../../libs/tess2/lib/linux64/libtess2.a -lz -lgstapp-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -ludev -lfontconfig -lfreetype -lsndfile -lopenal -lcurl -lglfw -lpulse-simple -lpulse -lasound -lGLEW -lGLU -lGL -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lglut -lX11 -lXrandr -lXxf86vm -lXi -lXcursor -ldl -lpthread -lfreeimage -lboost_filesystem -lboost_system -lpugixml -luriparser -lXinerama -lrtaudio obj/linux64/Debug/src/main.o:main.cpp:vtable for Poco::Net::Impl::IPv4SocketAddressImpl: error: undefined reference to 'Poco::Net::Impl::IPv4SocketAddressImpl::toString[abi:cxx11]() const' obj/linux64/Debug/src/main.o:main.cpp:vtable for Poco::Net::Impl::IPv6SocketAddressImpl: error: undefined reference to 'Poco::Net::Impl::IPv6SocketAddressImpl::toString[abi:cxx11]() const' /home/travis/openFrameworks/apps/devApps/NatNet2OSCbridge/src/ofApp.cpp:40: error: undefined reference to 'Poco::Net::NetworkInterface::name[abi:cxx11]() const' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:1146: error: undefined reference to 'Poco::Net::NetworkInterface::name[abi:cxx11]() const' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:1147: error: undefined reference to 'Poco::Net::NetworkInterface::displayName[abi:cxx11]() const' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:1174: error: undefined reference to 'Poco::Net::NetworkInterface::name[abi:cxx11]() const' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:326: error: undefined reference to 'Poco::Exception::displayText[abi:cxx11]() const' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:239: error: undefined reference to 'Poco::Exception::displayText[abi:cxx11]() const' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:122: error: undefined reference to 'Poco::Net::IPAddress::IPAddress(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:132: error: undefined reference to 'Poco::Net::IPAddress::IPAddress(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:154: error: undefined reference to 'Poco::Net::SocketAddress::SocketAddress(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:167: error: undefined reference to 'Poco::Net::SocketAddress::SocketAddress(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)' ../../../addons/ofxNatNet/src/ofxNatNet.cpp:126: error: undefined reference to 'Poco::Net::NetworkInterface::forName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Poco::Net::NetworkInterface::IPVersion)' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:456: error: undefined reference to 'Poco::XML::Element::removeAttribute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:485: error: undefined reference to 'Poco::XML::Element::removeAttribute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:500: error: undefined reference to 'Poco::XML::Element::removeAttribute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:392: error: undefined reference to 'Poco::XML::Document::createTextNode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:385: error: undefined reference to 'Poco::XML::Document::createTextNode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:641: error: undefined reference to 'Poco::XML::Document::createAttribute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:642: error: undefined reference to 'Poco::XML::Attr::setValue(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:682: error: undefined reference to 'Poco::XML::Document::createElement(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:687: error: undefined reference to 'Poco::XML::Element::setAttribute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:699: error: undefined reference to 'Poco::XML::Element::setAttribute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:694: error: undefined reference to 'Poco::XML::Document::createElement(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:160: error: undefined reference to 'Poco::XML::Document::createElement(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:175: error: undefined reference to 'Poco::XML::Document::createElement(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' ../../../addons/ofxPoco/src/ofxXmlPoco.cpp:716: error: undefined reference to 'Poco::XML::DOMParser::parseString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' collect2: error: ld returned 1 exit status

Rg,

Arnaud

Did you get this problem resolved?

This was solved in 0.10.1 just re-run the install_dependencies script

I’ve rerun the travis build from of git master. Still the same error:

see: https://api.travis-ci.org/v3/job/508354667/log.txt

End of the log as it’s a huge log:

obj/linux64/Debug/src/main.o:main.cpp:vtable for Poco::Net::Impl::IPv4SocketAddressImpl: error: undefined reference to 'Poco::Net::Impl::IPv4SocketAddressImpl::toString[abi:cxx11]() const'
obj/linux64/Debug/src/main.o:main.cpp:vtable for Poco::Net::Impl::IPv6SocketAddressImpl: error: undefined reference to 'Poco::Net::Impl::IPv6SocketAddressImpl::toString[abi:cxx11]() const'

It is linking to

/home/travis/openFrameworks/addons/ofxPoco/libs/poco/lib/linux64/libPocoNet.a

and using includes from:

-I/home/travis/openFrameworks/addons/ofxPoco/libs/poco/include

This should be right, right?

I’ll have to see if I can reproduce this with a smaller sample

Rg,

Arnaud

Just a ping as this issue still exists. For example when building on Travis using xenial(16.04) instead of trusty. The install_dependencies script patches ofxPoco so it uses a downloaded poco build. However this build is not compatible. I’ll see if I can find more causes.

Removing old libraries
Uncompressing libraries linux64gcc5 from openFrameworksLibs_master_linux64gcc5.tar.bz2
Copying libxml2 to ofxSvg
Copying svgtiny to ofxSvg
Copying poco to ofxPoco

Ok I made a simple test using the colorExample and some Poco code.

header is this:

#pragma once

#include "ofMain.h"
#include <Poco/Net/SocketAddress.h>
#include <Poco/Net/DatagramSocket.h>
#include <Poco/Net/MulticastSocket.h>
#include <Poco/Net/NetworkInterface.h>
#include <Poco/Net/NetException.h>


class ofApp : public ofBaseApp{
	
	public:
		
		void setup();
		void update();
		void draw();
		
		void keyPressed(int key);
		void keyReleased(int key);
		void mouseMoved(int x, int y );
		void mouseDragged(int x, int y, int button);
		void mousePressed(int x, int y, int button);
		void mouseReleased(int x, int y, int button);
		void mouseEntered(int x, int y);
		void mouseExited(int x, int y);
		void windowResized(int w, int h);
		void dragEvent(ofDragInfo dragInfo);
		void gotMessage(ofMessage msg);		

        // member variables to store the current mouse X and Y position 
        // as a percentage of the width/height of the screen
        float mouseXPercent, mouseYPercent;
        map<string, Poco::Net::IPAddress> getNetworkInterfaces()
		{
		    map<string, Poco::Net::IPAddress> ret;

		    Poco::Net::NetworkInterface::Map m = Poco::Net::NetworkInterface::map(true, true);
		    assert (!m.empty());
		    for (Poco::Net::NetworkInterface::Map::const_iterator it = m.begin(); it != m.end(); ++it)
		    {
		        std::cout << std::endl << "=============" << std::endl;

		        std::cout << "Index:       " << it->second.index() << std::endl;
		        std::cout << "Name:        " << it->second.name() << std::endl;
		        std::cout << "DisplayName: " << it->second.displayName() << std::endl;
		        std::cout << "Status:      " << (it->second.isUp() ? "Up" : "Down") << std::endl;

		        Poco::Net::NetworkInterface::MACAddress mac(it->second.macAddress());
		        if (!mac.empty() && (it->second.type() != Poco::Net::NetworkInterface::NI_TYPE_SOFTWARE_LOOPBACK))
		                std::cout << "MAC Address: (" << it->second.type() << ") " << mac << std::endl;

		        typedef Poco::Net::NetworkInterface::AddressList List;

		        const List& ipList = it->second.addressList();
		        List::const_iterator ipIt = ipList.begin();
		        List::const_iterator ipEnd = ipList.end();
		        for (int counter = 0; ipIt != ipEnd; ++ipIt, ++counter)
		        {
		            int fam = ipIt->get<Poco::Net::NetworkInterface::IP_ADDRESS>().family();

		            std::cout << std::endl << "----------" << std::endl;
		            std::cout << "Address " << counter << std::endl;
		            std::cout << "----------" << std::endl;
		            std::cout << "Family:     " << fam << std::endl;
		            std::cout << "Address:     " << ipIt->get<Poco::Net::NetworkInterface::IP_ADDRESS>() << std::endl;
		            Poco::Net::IPAddress addr = ipIt->get<Poco::Net::NetworkInterface::SUBNET_MASK>();
		            if (!addr.isWildcard()) std::cout << "Subnet:      " << addr << " (/" << addr.prefixLength() << ")" << ")" << std::endl;
		                    addr = ipIt->get<Poco::Net::NetworkInterface::BROADCAST_ADDRESS>();
		            if (!addr.isWildcard()) std::cout << "Broadcast:   " << addr << std::endl;
		            if (fam == Poco::Net::AddressFamily::IPv4)
		            {
		                ret[it->second.name()] = ipIt->get<Poco::Net::NetworkInterface::IP_ADDRESS>();
		            }
		        }
		    }
		    return ret;
		}
};

In travis this results in the same error:
https://travis-ci.org/sphaero/colorExample/jobs/586900067

App here:

How can I find out what version of Poco is provided? It seems it’s missing some methods?