[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xmlblaster-devel] Problem encountered when building C++ client

Hi all,

I have written a fairly simple C++ client, but I am having problem to
build it.  Here's what I wrote (in one file named "strtest.cpp"):

#include <string>
#include <iostream>
#include <client/XmlBlasterAccess.h>
#include <client/xmlBlasterClient.h>
#include <util/Global.h>

using namespace std;
using namespace org::xmlBlaster::util;
using namespace org::xmlBlaster::client;
using namespace org::xmlBlaster::client::qos;
using namespace org::xmlBlaster::client::key;

class MessageClient : public I_Callback

        virtual ~MessageClient()

        virtual string update(const string& sessionId_, UpdateKey&
updateKey_, void *content_, long contentSize_, UpdateQos& updateQos_)
            string content((char*)content_);
//             return "";
            return processMessage(updateKey_.getOid(), content);

        virtual string processMessage(const string& topic_, const
string& content_)
            string rc = "hello world";

            cout << "\n";
            cout << "Topic = " << topic_;
            cout << "Content = " << content_;
            return rc;

}; // class MessageClient

int main (int args, char** argv)
//     XMLPlatformUtils::Initialize();
//     Global& glob = Global::getInstance();
//     glob.initialize(args, argv);
    MessageClient client;
    return 0;

I understand that the code is non-functional, but it should still be
able to compile and link.  If I use the following command to compile and
link it (in one step):

g++  -g -Wall -D_REENTRANT -DMICO  -I/home/emx/mico/include
-I/home/emx/xmlBlaster/src/c++ -I. -L/home/emx/xerces-c-src_2_3_0/lib
-L/home/emx/xmlBlaster/lib -L/home/emx/mico/lib  -lpthread -lmico2.3.7
-ldl -lxerces-c -lxmlBlasterClient -lmicocoss2.3.7 -ostrtest strtest.cpp

Then I got this error:

/tmp/cc0WEbf6.o: In function
`MessageClient::update(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, org::xmlBlaster::client::key::UpdateKey&,
void*, long, org::xmlBlaster::client::qos::UpdateQos&)':
/home/emx/xmlBlaster/src/c++/util/ErrorCode.h:62: undefined reference to
`org::xmlBlaster::client::key::MsgKeyBase::getOid() const'
collect2: ld returned 1 exit status

If I comment out the call to processMessage() in update() and replace it
with the return of empty string, then the code will build without any

I have already checked the following environment variables, they all
exist and correct:

Also, I have checked that the library files exist and at the correct
directories as well:
/home/emx/xerces-c-src_2_3_0/libxerces-c.so	(symbolic link)
/home/emx/xerces-c-src_2_3_0/libxerces-c.so.23	(symbolic link)

Is there anything I missed?

Thanks in advance.

Seamus Huang