Put something like this in the project .h file (say, projdb.h):
#ifndef PROJ_DB_CPP
#define MYSQLPP_SSQLS_NO_STATICS
#endif
and something like this in the one corresponding .cpp file
#define PROJ_DB_CPP
#include "projdb.h"
#undef PROJ_DB_CPP
This caught me up too; search the mail archives for a fuller
explanation.
Will
On Mon, 2007-08-06 at 16:14 -0500, Graham Reitz wrote:
> I created a header file where I placed all of my sql_create_# macros.
>
> I keep getting multiple definition linker errors.
>
> /usr/bin/ld: multiple definitions of symbol agencies::names
> (there are more, but similar)
>
> What am I missing?
>
> The code looks as follows:
>
> // start file my_tables.h
> #include <mysql++.h>
> #include <custom.h>
> #include <string>
>
> #ifndef _TABLES_HPP_
> #define _TABLES_HPP_
>
> sql_create_3(agencies, 1, 3,
> unsigned int, agency_id,
> std::string, agency_name,
> std::string, agency_contact)
>
> sql_create_3(billing, 1, 3,
> unsigned int, billing_id,
> std::string, billing_agency_name,
> std::string, billing_first_name)
> #endif // _TABLES_HPP_
> // end file my_tables.h
>
> // start file my_db.h
> #ifndef _MY_DB_H_
> #define _MY_DB_H_
>
> #include <string>
> #include <vector>
>
> #include <boost/noncopyable.hpp>
> #include "my_tables.h"
>
> class my_db : boost::noncopyable
> {
> public:
> explicit my_db(std::string tcp_ip_address, unsigned int
> port_number,
> std::string db_name, std::string db_username,
> std::string db_password);
> };
> #endif // _MY_DB_H_
> // end file my_db.h
>
> // start file my_db.cpp
> #include <mysql++.h>
> #include "tac_db.h"
>
> my_db::my_db(std::string tcp_ip_address, unsigned int port_number,
> std::string db_name, std::string db_username,
> std::string db_password)
> {
> // Connect to the database
> mysqlpp::Connection connection(db_name.c_str(),
> tcp_ip_address.c_str(),
> db_username.c_str(), db_password.c_str(), port_number, false);
> }
> // end file my_db.cpp
>
>
>
>
--
William F Dowling
william.dowling@stripped
www.scientific.thomson.com