List:MySQL++« Previous MessageNext Message »
From:William F. Dowling Date:August 6 2007 9:21pm
Subject:Re: multiple definitions of symbol linker error using sql_create_#
View as plain text  
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
Thread
multiple definitions of symbol linker error using sql_create_#Graham Reitz6 Aug
  • Re: multiple definitions of symbol linker error using sql_create_#William F. Dowling6 Aug
    • Re: multiple definitions of symbol linker error using sql_create_#Graham Reitz6 Aug
  • Re: multiple definitions of symbol linker error using sql_create_#Graham Reitz6 Aug
  • Re: multiple definitions of symbol linker error using sql_create_#Graham Reitz6 Aug
  • MYSQLPP problem in visual studio : mysqlpp.dll was not found !!!Cedrik Magis7 Aug
    • Re: MYSQLPP problem in visual studio : mysqlpp.dll was not found!!!Michael Nye7 Aug
      • RE: MYSQLPP problem in visual studio : mysqlpp.dll was not found !!!Jim Wallace7 Aug
        • RE: MYSQLPP problem in visual studio : mysqlpp.dll was not found !!!Ian Daysh7 Aug
          • RE: MYSQLPP problem in visual studio : mysqlpp.dll was not found !!!Jim Wallace7 Aug
            • RE: MYSQLPP problem in visual studio : mysqlpp.dll was not found !!!Ian Daysh7 Aug
            • How to initialize mysqlpp::sql_tinyblob?Graham Reitz8 Aug
              • Re: How to initialize mysqlpp::sql_tinyblob?Warren Young9 Aug
                • Re: How to initialize mysqlpp::sql_tinyblob?Graham Reitz11 Aug
        • RE: MYSQLPP problem in visual studio : mysqlpp.dll was not found !!!Cedrik Magis7 Aug