Hi all;
When I run the example in its original directory, I have no problems.
When I wrap the example in my source, the source compiles but fail to
link with a certain Library as shown in the output below. What I want is
to get out the query results and use them in normal C++ environment.
Your help will be greatly appreciated. I am using linux Redhad version
6.2
and mysql++ version 1.7.8
Thanx in advance
Tiwonge
This is my compiler output
g++ -W -Wall -Wpointer-arith -pipe -D_POSIX_THREADS
-D_POSIX_THREAD_SAFE_FUNCTIONS -D_REENTRANT -DACE_HAS_AIO_CALLS -O3 -g
-Wno-uninitialized -fno-implicit-templates
-I/home/ACE/ACE_wrappers/TAO/orbsvcs -I/home/ACE/ACE_wrappers/TAO
-I/usr/include/mysql -I/home/tiwonge/broker/broker_idl
-I/home/tiwonge/retailer/implementation_TAO/Utils -I/usr/include/mysql
-I/usr/local/mysql++/sqlplusint/.libs -I/usr/local/mysql++/sqlplusint
-I/usr/lib/mysql/include -I/home/ACE/ACE_wrappers
-DACE_HAS_EXCEPTIONS -L/home/ACE/ACE_wrappers/TAO/orbsvcs/orbsvcs
-L/home/ACE/ACE_wrappers/TAO/tao -L/usr/lib/mysql/lib -L./../broker_idl
-L/home/tiwonge/retailer/implementation_TAO/Utils -L/usr/lib/mysql
-L/home/ACE/ACE_wrappers/ace -L./ -o supplierServer
.obj/supplierServer.o libsupplier.a -lTAO_CosTrading -lTAO_CosNaming
-lTAO_DynamicAny -lTAO_PortableServer -lTAO -lz -lmysqlclient
-lsupplier_idl -lsqlplus -lTINAUtils -lACE -ldl -lpthread -lrt
libsupplier.a(i_QueryDb_i.o): In function
`i_QueryDb_i::getMessage(short, char const *, supplier::logInInfo const
&, supplier::messageInfo_out)':
/usr/local/mysql++/sqlplusint/connection1.hh:120: undefined reference to
`void MysqlConnection::storein_sequence<vector<stock,
__default_alloc_template<true, 0> > >(vector<stock,
__default_alloc_template<true, 0> > &, basic_string<char,
string_char_traits<char>, __default_alloc_template<true, 0> > const &)'
collect2: ld returned 1 exit status
make: *** [supplierServer] Error 1
This is my makefile
MAKEFILE = Makefile
BIN2 = supplierServer supplierClient updatedb getmessage
LIBNAME = libsupplier
LIB2 = $(LIBNAME).a
#SHLIB2 = $(LIBNAME).$(SOEXT)
ifndef TAO_ROOT
TAO_ROOT = $(ACE_ROOT)/TAO
endif
FILES = i_InitialiseDb_i\
i_UpdateDb_i\
i_QueryDb_i
BROKER_ROOT = $(HOME)/broker
MYSQLCLIENT_ROOT =/usr/local/mysql++
MYSQL_ROOT = /usr/lib/mysql
LDFLAGS += -L$(TAO_ROOT)/orbsvcs/orbsvcs -L$(TAO_ROOT)/tao
-L$(MYSQL_ROOT)/lib -L./../broker_idl
-L$(HOME)/retailer/implementation_TAO/Utils -L/usr/lib/mysql
CPPFLAGS += -I$(TAO_ROOT)/orbsvcs -I$(TAO_ROOT) -I/usr/include/mysql
-I$(BROKER_ROOT)/broker_idl -I$(HOME)/retailer/implementation_TAO/Utils
-I/usr/include/mysql -I$(MYSQLCLIENT_ROOT)/sqlplusint/.libs
-I$(MYSQLCLIENT_ROOT)/sqlplusint -I$(MYSQL_ROOT)/include
LSRC = $(addsuffix .cpp,$(FILES))
PSRC = $(addsuffix .cpp,$(BIN2))
#ACE_SHLIBS += -lTAO_CosTrading -lTAO_CosNaming -lTAO_DynamicAny
-lTAO_PortableServer -lTAO -lACE -lTINAUtils
LDLIBS += -lTAO_CosTrading -lTAO_CosNaming -lTAO_DynamicAny
-lTAO_PortableServer -lTAO -lz -lmysqlclient -lsupplier_idl -lsqlplus
-lTINAUtils
CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS)
$(LDFLAGS) -o $@
#----------------------------------------------------------------------------
# Include macros and targets
#-------------------------------------------------------------------------
ifeq ($(ACE_HAS_GNUG_PRE_2_8),1)
# Since older g++ cannot handle nested classes properly, this test
# will not build on g++ prior to 2.8.0.
all clean realclean:
@echo Trading tests is not built with older versions of g++
else # ! ACE_HAS_GNUG_PRE_2_8
include $(TAO_ROOT)/rules.tao.GNU
#### If the TAO orbsvcs library wasn't built with sufficient components,
#### don't try to build here.
TAO_ORBSVCS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs)
#ifeq (Trader,$(findstring Trader,$(TAO_ORBSVCS)))
BIN = $(BIN2)
LIB = $(LIB2)
SHLIB = $(SHLIB2)
#endif # Trader
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
include $(ACE_ROOT)/include/makeinclude/macros.GNU
include $(TAO_ROOT)/rules.tao.GNU
include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU
include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU
#include $(TINA_ROOT)/make.tina.GNU
.PRECIOUS: i_InitialiseDb_i.o supplierServer.o
ifneq ($(BIN),)
ifeq ($(SHLIB), $(findstring $(SHLIB), $(BUILD)))
$(BIN): $(SHLIB)
endif
ifeq ($(LIB), $(findstring $(LIB), $(BUILD)))
$(BIN): $(LIB)
endif
endif # BIN
realclean: clean
-$(RM) $(foreach file, $(IDL_FILES), $(foreach ext, $(IDL_EXT),
$(file)$(ext)))
endif # ! ACE_HAS_GNUG_PRE_2_8
This is my source
#include "orbsvcs/orbsvcs/CosNamingC.h"
#include "i_QueryDb_i.h"
#include <sqlplus.hh>
#include "stream.h"
#include <vector>
#include "stdlib.h"
#include <iostream>
#include <iomanip>
#include <custom.hh>
//#include "util.hh"
sql_create_5(stock, 1, 5, string, item, longlong, num,
double, weight, double, price, Date, sdate)
void i_QueryDb_i::getMessage (
supplier::supplierId id,
const char * suppname,
const supplier::logInInfo & logininf,
supplier::messageInfo_out msginfo
)
ACE_THROW_SPEC ((
CORBA::SystemException
))
{
try { // its in one big try block
Connection con (use_exceptions);
con.connect ("mysql_cpp_data", "localhost", "root", "tiwonge");
Query query = con.query ();
query << "select * from stock";
vector < stock > res;
query.storein (res);
cout.setf (ios::left);
cout << setw (17) << "Item"
<< setw (4) << "Num"
<< setw (7) << "Weight"
<< setw (7) << "Price"
<< "Date" << endl
<< endl;
cout.precision(3);
vector <stock>::iterator i;
for (i = res.begin (); i != res.end (); i++) {
cout << setw (17) << i->item.c_str ()
<< setw (4) << i->num
<< setw (7) << i->weight
<< setw (7) << i->price
<< i->sdate
<< endl;
}
return 0;
} catch (BadQuery er){ // handle any connection
// or query errors that may come up
cerr << "Error: " << er.error << endl;
return -1;
} catch (BadConversion er) {
cerr << "Error: Tried to convert \"" << er.data << "\" to a \""
<< er.type_name << "\"." << endl;
return -1;
}
}
Tiwonge Kawonga
<[EMAIL PROTECTED]>
Telecomunications Engineering Research Programme, School of
Electrical and Information Engineering, University of the
Witwatersrand, Johannesburg
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <mysql-unsubscribe-##L=##[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php