MinGW and SQLite

This is a discussion on MinGW and SQLite within the C Programming forums, part of the General Programming Boards category; Hi I am a seasoned C# developer trying to learn Objective-C using MinGW. I have a working install of Objective-C ...

  1. #1
    Registered User
    Join Date
    Feb 2010
    Posts
    3

    Question MinGW and SQLite

    Hi I am a seasoned C# developer trying to learn Objective-C using MinGW.

    I have a working install of Objective-C and am trying to work with SQLite.
    I have the SQLite3.dll in C:\windows\system32 (on the path), sqlite3.h in the include directoy (C:\MinGW\include) and libsqlite3.a in the lib directory (c:\MinGW\lib).

    When I try to compile

    #include <stdio.h>
    #include <stdlib.h>
    #include "sqlite3.h"

    static int callback(void *NotUsed, int argc, char **argv, char **azColName){
    int i;
    NotUsed=0;

    for(i=0; i<argc; i++){
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
    }

    int main(int argc, char **argv){
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;

    if( argc!=3 ){
    fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
    exit(1);
    }
    rc = sqlite3_open(argv[1], &db);
    if( rc ){
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    sqlite3_close(db);
    exit(1);
    }
    rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
    if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
    }
    sqlite3_close(db);
    return 0;
    }

    simply with gcc sqltest.c -o sqltest, I get the error "undefined reference to 'sqlite3_open'"

    It is picking up the header as it recognises the sqlite type.

    Do I need to specify linking in the library or should it just pick it up from the default lib directory?

    Any help is greatly appreciated as I seem to be missing something fundamental.

    Thanks in advance.

    Carl

  2. #2
    Registered User
    Join Date
    Feb 2010
    Posts
    3
    See an absolute newbie.

    I needed to specify -lsqlite3 simple as.

  3. #3
    Registered User
    Join Date
    Oct 2006
    Location
    Canada
    Posts
    1,243
    You likely have to specify that you're linking to the library. Look around in the documentation for the API, it may be something like "-lsqlite3" that you have to pass to gcc.

    EDIT: I see you got it.
    Last edited by nadroj; 02-15-2010 at 06:36 PM.

  4. #4
    Registered User
    Join Date
    Feb 2010
    Posts
    3

    Smile

    Quote Originally Posted by nadroj View Post
    You likely have to specify that you're linking to the library. Look around in the documentation for the API, it may be something like "-lsqlite3" that you have to pass to gcc.

    EDIT: I see you got it.
    I found it in the end but appreciate you taking the time to respond, thanks.

  5. #5
    Registered User
    Join Date
    Oct 2006
    Location
    Canada
    Posts
    1,243
    You're quite welcome.

  6. #6
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    21,461
    Quote Originally Posted by CarlGB
    I have the SQLite3.dll in C:\windows\system32 (on the path), sqlite3.h in the include directoy (C:\MinGW\include) and libsqlite3.a in the lib directory (c:\MinGW\lib).
    Have you considered just compiling with the SQLite amalgamation?
    C + C++ Compiler: MinGW port of GCC
    Version Control System: Bazaar

    Look up a C++ Reference and learn How To Ask Questions The Smart Way

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. SQLite not performing update
    By OnionKnight in forum C Programming
    Replies: 0
    Last Post: 01-21-2009, 03:21 PM

Tags for this Thread


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21