[odb-users] error during linking process for hello world example
with sqlite database
Teererai Marange
selection989 at gmail.com
Wed Jun 24 23:41:59 EDT 2015
Thanks for the quick response, however I have encountered another issue.
When I perform the linking once again with the command:
g++ -o driver driver.o person-odb.o -lodb-sqlite -lodb -L\usr\local\lib
The following error is returned:
driver.o: In function `main':
driver.cpp:(.text+0x76): undefined reference to `person::person(std::string
const&, std::string const&, unsigned short)'
driver.cpp:(.text+0x110): undefined reference to
`person::person(std::string const&, std::string const&, unsigned short)'
driver.cpp:(.text+0x1b3): undefined reference to
`person::person(std::string const&, std::string const&, unsigned short)'
collect2: error: ld returned 1 exit status
The code for driver.cpp is shown below:
// driver.cpp
//
#include <memory> // std::auto_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
#include <odb/sqlite/database.hxx>
#include "person.hpp"
#include "person-odb.hxx"
using namespace std;
using namespace odb::core;
int
main (int argc, char* argv[])
{
person john ("John", "Doe", 33);
person jane ("Jane", "Doe", 32);
person joe ("Joe", "Dirt", 30);
transaction t (db->begin ());
// Make objects persistent and save their ids for later use.
//
john_id = db->persist (john);
jane_id = db->persist (jane);
joe_id = db->persist (joe);
t.commit ();
}
}
catch (const odb::exception& e)
{
cerr << e.what () << endl;
return 1;
}
}
person.hpp is shown below:
// person.hpp
//
#ifndef PERSON_HPP
#define PERSON_HPP
#include <string>
#include <odb/core.hxx>
#pragma db object
class person
{
public:
person (const std::string& first,
const std::string& last,
unsigned short age);
const std::string& first () const;
const std::string& last () const;
unsigned short age () const;
void age (unsigned short);
private:
person(){};
friend class odb::access;
#pragma db id auto
unsigned long id_;
std::string first_;
std::string last_;
unsigned short age_;
};
#endif
I am new to linking in general so any assistance would be appreciated.
On Thu, Jun 25, 2015 at 6:04 AM, Alexandre Pretyman <
alexandre.pretyman at gmail.com> wrote:
> You seem to be missing the argument to tell the linker to actually look in /usr/local/lib:
> -L/usr/local/lib -lodb-mysql
>
> For more information, you can follow this link: http://bfy.tw/V1d =)
>
> On 24 June 2015 at 11:52, Teererai Marange <selection989 at gmail.com> wrote:
>
>> In attempting to get the hello world example program from the
>> documentation
>> to work, I am failing to link the application using the following command
>> entered in terminal:
>>
>> g++ -o driver driver.o person-odb.o -L/usr/local/lib/
>> libodb-sqlite-2.4.so
>> -lodb-mysql -lodb
>>
>> The following error is returned by terminal:
>>
>> /usr/bin/ld: cannot find -lodb-mysql
>> collect2: error: ld returned 1 exit status
>>
>> Upon installation of libodb-sqlite-2.4, I was informed that the libraries
>> were located in /usr/local/lib and can confirm that the shared objects do
>> indeed exist there. In addition to this, I am using libodb-2.4 and am
>> using
>> g++ version 4.8.
>>
>>
>>
>> --
>> Regards,
>>
>> Teererai Marange
>>
>
>
>
> --
> Alexandre Pretyman
>
--
Regards,
Teererai Marange
Ph: 021521987
More information about the odb-users
mailing list