15 messages in com.mysql.lists.plusplusRe: multiple definitions of symbol li...
FromSent OnAttachments
Graham Reitz06 Aug 2007 14:14 
William F. Dowling06 Aug 2007 14:20 
Graham Reitz06 Aug 2007 14:26 
Graham Reitz06 Aug 2007 14:31 
Graham Reitz06 Aug 2007 14:48 
Cedrik Magis07 Aug 2007 01:55 
Michael Nye07 Aug 2007 01:59 
Jim Wallace07 Aug 2007 04:04 
Ian Daysh07 Aug 2007 04:16 
Cedrik Magis07 Aug 2007 04:32 
Jim Wallace07 Aug 2007 06:38 
Ian Daysh07 Aug 2007 10:38 
Graham Reitz07 Aug 2007 20:45 
Warren Young09 Aug 2007 05:01 
Graham Reitz10 Aug 2007 17:42 
Subject:Re: multiple definitions of symbol linker error using sql_create_#
From:William F. Dowling (will@thomson.com)
Date:08/06/2007 02:20:42 PM
List:com.mysql.lists.plusplus

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