Need setup code for VC++ 2017 that will ACTUALLY COMPILE

classic Classic list List threaded Threaded
28 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Need setup code for VC++ 2017 that will ACTUALLY COMPILE

Keith Medcalf

First of all use EITHER the source (.c) OR the precomiled dynamic link library (.dll/.lib).  Not both.  

The .c file contains the code to the sqlite3 database engine.  The DLL contains this code compiled to a Dynamic Link Library.  The LIB file tells your application how to find the code in the dynamic link library.  If you use both, only god (and probably not ever her) knows what will happen.

Here is a C++ program that actually does something (yours does not).  It compiles and runs when using a real compiler on Winders (GCC).  It has no error checking.  But it does call "C" functions from "C++".  Simply compile it (in C++ mode) together with the sqlite3.c (in C mode) and link them all together.


#include "sqlite3.h"
#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    sqlite3 *db;
    sqlite3_stmt *stmt;
    sqlite3_open(":memory:", &db);
    sqlite3_prepare_v2(db, "select sqlite_source_id();", -1, &stmt, NULL);
    sqlite3_step(stmt);
    cout << sqlite3_column_text(stmt, 0);
    sqlite3_finalize(stmt);
    sqlite3_close(db);
}




---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume.


>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>[hidden email]] On Behalf Of zydeholic
>Sent: Friday, 21 December, 2018 17:26
>To: SQLite mailing list
>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>My cpp code consists of this at the moment:
>#include "sqlite3.h"
>#include <fstream>
>#include <iostream>
>using namespace std;
>
>int main()
>{
>    sqlite3 *db;
>}
>
>I have added sqlite3.h to my header files.I have added sqlite3.c to
>my source files.I've moved these two files, plus sqlite3.dll and
>sqlite3.lib into the same directory as these other files:
>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3
>
>In Project, I've made the following settings:VC++
>Directories>>Library
>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;C/
>C++>>Additional Include
>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
>C/C++>>Precompiled Headers>>Not using precompiled headers (all
>configurations, all platforms).
>Linker>>Input>>Additional Dependencies>>sqlite3.lib
>I now get two errors when I compile:
>Severity    Code    Description    Project    File    Line    Suppres
>sion State
>Error    LNK2001    unresolved external symbol
>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlit
>e_try_3\sqlite_try_3\sqlite3.obj    1
>Severity    Code    Description    Project    File    Line    Suppres
>sion State
>Error    LNK1120    1 unresolved
>externals    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_3
>\Debug\sqlite_try_3.exe    1
>
>
>At some point before I started filling in the directories and such in
>Project, my code:
>sqlite3 *db;
>was errored out (underlined in red).  Now they are not erroring
>out.  I just get the two errors above when I compile.
>
>      From: zydeholic <[hidden email]>
> To: SQLite mailing list <[hidden email]>
> Sent: Friday, December 21, 2018 3:46 PM
> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>Ok, to further define my goals, I am not looking to compile the files
>into a final EXE, unless that is the only way I can use it with my
>program.  I want to tap into the sqlite functionality from a C++
>application I am writing.
>
>I suppose I need to use the DLL that I downloaded, but have never
>used an external library before, not where I had to tell the compiler
>how to talk to it.
>So, SQLite, backend database.  I will do the front end stuff in my
>code.  Hopefully this clarifies something.
>
>
>      From: Larry Brasfield <[hidden email]>
> To: "[hidden email]" <sqlite-
>[hidden email]>
> Sent: Friday, December 21, 2018 1:02 PM
> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>Zydeholic wrote:
>➢ I compile and get one error:
>Severity    Code    Description    Project    File    Line    Suppres
>sion State Error    LNK2001    unresolved external symbol
>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlit
>e_try_3\sqlite_try_3\sqlite3.obj    1
>
>That symbol is declared, and a definition for the object so named is
>coded, in the sqlite3.c amalgamation without the possibility of
>omission by the preprocessor.  So I find it exceedingly strange that
>your link operation is complaining of an unresolvable reference to
>that symbol in sqlite3.obj.  For a C compilation, which you certainly
>should be using for that C source, the name should be undecorated,
>except for the leading underscore, just as it appears in the above-
>quoted error message.  This leads me to believe you are doing
>something too strange for anybody to guess with the information
>provided so far.
>
>You may notice that this thread is misnamed for this latest
>difficulty, since the code does actually compile.  If I had to name
>it accurately, it would be called: [off topic] Need build
>instructions for my project which uses SQLite in a development
>environment differing from the one actually supported by the SQLite
>team.
>
>Some questions to ask yourself as you attempt to sort this out:
>1. Am I compiling the .c sources as C language?
>2. Have I modified the sources everybody assumes are as released by
>the SQLite team?
>3. What does insight does dumpbin.exe, (the VC command line tool for
>showing compiled image content), provide into my link errors?
>4. How does my sqlite3.obj differ from the one I get following step
>19 at https://www.sqlite.org/cli.html , and why?
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
>
>
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Need setup code for VC++ 2017 that will ACTUALLY COMPILE

zydeholic-2
In reply to this post by Igor Korot
Hi Igor,
I've looked and I don't see those exact words.  If you can, it would be helpful to know the route to get there, like

Linker>>Input>>???????????
Thanks for your time.

      From: Igor Korot <[hidden email]>
 To: SQLite mailing list <[hidden email]>
 Sent: Friday, December 21, 2018 4:47 PM
 Subject: Re: [sqlite] Need setup code for VC++ 2017 that will ACTUALLY COMPILE
   
Hi,

On Fri, Dec 21, 2018 at 6:26 PM zydeholic <[hidden email]> wrote:

>
> My cpp code consists of this at the moment:
> #include "sqlite3.h"
> #include <fstream>
> #include <iostream>
> using namespace std;
>
> int main()
> {
>    sqlite3 *db;
> }
>
> I have added sqlite3.h to my header files.I have added sqlite3.c to my source files.I've moved these two files, plus sqlite3.dll and sqlite3.lib into the same directory as these other files:
> C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3
>
> In Project, I've made the following settings:VC++ Directories>>Library Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;C/C++>>Additional Include Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
> C/C++>>Precompiled Headers>>Not using precompiled headers (all configurations, all platforms).
> Linker>>Input>>Additional Dependencies>>sqlite3.lib

You are almost there.
Just like you added the "Include Directory", you now need to add
"Linker Directory" or "Library Directory"

Thank you.



> I now get two errors when I compile:
> Severity    Code    Description    Project    File    Line    Suppression State
> Error    LNK2001    unresolved external symbol _sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_3\sqlite_try_3\sqlite3.obj    1
> Severity    Code    Description    Project    File    Line    Suppression State
> Error    LNK1120    1 unresolved externals    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_3\Debug\sqlite_try_3.exe    1
>
>
> At some point before I started filling in the directories and such in Project, my code:
> sqlite3 *db;
> was errored out (underlined in red).  Now they are not erroring out.  I just get the two errors above when I compile.
>
>      From: zydeholic <[hidden email]>
>  To: SQLite mailing list <[hidden email]>
>  Sent: Friday, December 21, 2018 3:46 PM
>  Subject: Re: [sqlite] Need setup code for VC++ 2017 that will ACTUALLY COMPILE
>
> Ok, to further define my goals, I am not looking to compile the files into a final EXE, unless that is the only way I can use it with my program.  I want to tap into the sqlite functionality from a C++ application I am writing.
>
> I suppose I need to use the DLL that I downloaded, but have never used an external library before, not where I had to tell the compiler how to talk to it.
> So, SQLite, backend database.  I will do the front end stuff in my code.  Hopefully this clarifies something.
>
>
>      From: Larry Brasfield <[hidden email]>
>  To: "[hidden email]" <[hidden email]>
>  Sent: Friday, December 21, 2018 1:02 PM
>  Subject: Re: [sqlite] Need setup code for VC++ 2017 that will ACTUALLY COMPILE
>
> Zydeholic wrote:
> ➢ I compile and get one error: Severity    Code    Description    Project    File    Line    Suppression State Error    LNK2001    unresolved external symbol _sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_3\sqlite_try_3\sqlite3.obj    1
>
> That symbol is declared, and a definition for the object so named is coded, in the sqlite3.c amalgamation without the possibility of omission by the preprocessor.  So I find it exceedingly strange that your link operation is complaining of an unresolvable reference to that symbol in sqlite3.obj.  For a C compilation, which you certainly should be using for that C source, the name should be undecorated, except for the leading underscore, just as it appears in the above-quoted error message.  This leads me to believe you are doing something too strange for anybody to guess with the information provided so far.
>
> You may notice that this thread is misnamed for this latest difficulty, since the code does actually compile.  If I had to name it accurately, it would be called: [off topic] Need build instructions for my project which uses SQLite in a development environment differing from the one actually supported by the SQLite team.
>
> Some questions to ask yourself as you attempt to sort this out:
> 1. Am I compiling the .c sources as C language?
> 2. Have I modified the sources everybody assumes are as released by the SQLite team?
> 3. What does insight does dumpbin.exe, (the VC command line tool for showing compiled image content), provide into my link errors?
> 4. How does my sqlite3.obj differ from the one I get following step 19 at https://www.sqlite.org/cli.html , and why?
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
>
>
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users


   
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Need setup code for VC++ 2017 that will ACTUALLY COMPILE

Igor Korot
Hi,
It is in the Properties->Linker->General->Additional Library Directories.
Don't remove the things that is already there - just append you path to the end.

Thank you.

On Fri, Dec 21, 2018 at 7:18 PM zydeholic <[hidden email]> wrote:

>
> Hi Igor,
> I've looked and I don't see those exact words.  If you can, it would be helpful to know the route to get there, like
>
> Linker>>Input>>???????????
> Thanks for your time.
>
>       From: Igor Korot <[hidden email]>
>  To: SQLite mailing list <[hidden email]>
>  Sent: Friday, December 21, 2018 4:47 PM
>  Subject: Re: [sqlite] Need setup code for VC++ 2017 that will ACTUALLY COMPILE
>
> Hi,
>
> On Fri, Dec 21, 2018 at 6:26 PM zydeholic <[hidden email]> wrote:
> >
> > My cpp code consists of this at the moment:
> > #include "sqlite3.h"
> > #include <fstream>
> > #include <iostream>
> > using namespace std;
> >
> > int main()
> > {
> >    sqlite3 *db;
> > }
> >
> > I have added sqlite3.h to my header files.I have added sqlite3.c to my source files.I've moved these two files, plus sqlite3.dll and sqlite3.lib into the same directory as these other files:
> > C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3
> >
> > In Project, I've made the following settings:VC++ Directories>>Library Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;C/C++>>Additional Include Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
> > C/C++>>Precompiled Headers>>Not using precompiled headers (all configurations, all platforms).
> > Linker>>Input>>Additional Dependencies>>sqlite3.lib
>
> You are almost there.
> Just like you added the "Include Directory", you now need to add
> "Linker Directory" or "Library Directory"
>
> Thank you.
>
>
>
> > I now get two errors when I compile:
> > Severity    Code    Description    Project    File    Line    Suppression State
> > Error    LNK2001    unresolved external symbol _sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_3\sqlite_try_3\sqlite3.obj    1
> > Severity    Code    Description    Project    File    Line    Suppression State
> > Error    LNK1120    1 unresolved externals    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_3\Debug\sqlite_try_3.exe    1
> >
> >
> > At some point before I started filling in the directories and such in Project, my code:
> > sqlite3 *db;
> > was errored out (underlined in red).  Now they are not erroring out.  I just get the two errors above when I compile.
> >
> >      From: zydeholic <[hidden email]>
> >  To: SQLite mailing list <[hidden email]>
> >  Sent: Friday, December 21, 2018 3:46 PM
> >  Subject: Re: [sqlite] Need setup code for VC++ 2017 that will ACTUALLY COMPILE
> >
> > Ok, to further define my goals, I am not looking to compile the files into a final EXE, unless that is the only way I can use it with my program.  I want to tap into the sqlite functionality from a C++ application I am writing.
> >
> > I suppose I need to use the DLL that I downloaded, but have never used an external library before, not where I had to tell the compiler how to talk to it.
> > So, SQLite, backend database.  I will do the front end stuff in my code.  Hopefully this clarifies something.
> >
> >
> >      From: Larry Brasfield <[hidden email]>
> >  To: "[hidden email]" <[hidden email]>
> >  Sent: Friday, December 21, 2018 1:02 PM
> >  Subject: Re: [sqlite] Need setup code for VC++ 2017 that will ACTUALLY COMPILE
> >
> > Zydeholic wrote:
> > ➢ I compile and get one error: Severity    Code    Description    Project    File    Line    Suppression State Error    LNK2001    unresolved external symbol _sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_3\sqlite_try_3\sqlite3.obj    1
> >
> > That symbol is declared, and a definition for the object so named is coded, in the sqlite3.c amalgamation without the possibility of omission by the preprocessor.  So I find it exceedingly strange that your link operation is complaining of an unresolvable reference to that symbol in sqlite3.obj.  For a C compilation, which you certainly should be using for that C source, the name should be undecorated, except for the leading underscore, just as it appears in the above-quoted error message.  This leads me to believe you are doing something too strange for anybody to guess with the information provided so far.
> >
> > You may notice that this thread is misnamed for this latest difficulty, since the code does actually compile.  If I had to name it accurately, it would be called: [off topic] Need build instructions for my project which uses SQLite in a development environment differing from the one actually supported by the SQLite team.
> >
> > Some questions to ask yourself as you attempt to sort this out:
> > 1. Am I compiling the .c sources as C language?
> > 2. Have I modified the sources everybody assumes are as released by the SQLite team?
> > 3. What does insight does dumpbin.exe, (the VC command line tool for showing compiled image content), provide into my link errors?
> > 4. How does my sqlite3.obj differ from the one I get following step 19 at https://www.sqlite.org/cli.html , and why?
> > _______________________________________________
> > sqlite-users mailing list
> > [hidden email]
> > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >
> >
> >
> >
> >
> > _______________________________________________
> > sqlite-users mailing list
> > [hidden email]
> > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Need setup code for VC++ 2017 that will ACTUALLY COMPILE

zydeholic
In reply to this post by Keith Medcalf
Holy Chewbacca,
I removed the .c file from the project and I got an error free compile.  Yes, I knew my code would not do anything, except prove that I was able to talk through to something.  I'll try your code below. 

Thanks MUCHO.

David

      From: Keith Medcalf <[hidden email]>
 To: SQLite mailing list <[hidden email]>
 Sent: Friday, December 21, 2018 4:53 PM
 Subject: Re: [sqlite] Need setup code for VC++ 2017 that will ACTUALLY COMPILE
   

First of all use EITHER the source (.c) OR the precomiled dynamic link library (.dll/.lib).  Not both. 

The .c file contains the code to the sqlite3 database engine.  The DLL contains this code compiled to a Dynamic Link Library.  The LIB file tells your application how to find the code in the dynamic link library.  If you use both, only god (and probably not ever her) knows what will happen.

Here is a C++ program that actually does something (yours does not).  It compiles and runs when using a real compiler on Winders (GCC).  It has no error checking.  But it does call "C" functions from "C++".  Simply compile it (in C++ mode) together with the sqlite3.c (in C mode) and link them all together.


#include "sqlite3.h"
#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    sqlite3 *db;
    sqlite3_stmt *stmt;
    sqlite3_open(":memory:", &db);
    sqlite3_prepare_v2(db, "select sqlite_source_id();", -1, &stmt, NULL);
    sqlite3_step(stmt);
    cout << sqlite3_column_text(stmt, 0);
    sqlite3_finalize(stmt);
    sqlite3_close(db);
}




---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume.


>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>[hidden email]] On Behalf Of zydeholic
>Sent: Friday, 21 December, 2018 17:26
>To: SQLite mailing list
>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>My cpp code consists of this at the moment:
>#include "sqlite3.h"
>#include <fstream>
>#include <iostream>
>using namespace std;
>
>int main()
>{
>    sqlite3 *db;
>}
>
>I have added sqlite3.h to my header files.I have added sqlite3.c to
>my source files.I've moved these two files, plus sqlite3.dll and
>sqlite3.lib into the same directory as these other files:
>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3
>
>In Project, I've made the following settings:VC++
>Directories>>Library
>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;C/
>C++>>Additional Include
>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
>C/C++>>Precompiled Headers>>Not using precompiled headers (all
>configurations, all platforms).
>Linker>>Input>>Additional Dependencies>>sqlite3.lib
>I now get two errors when I compile:
>Severity    Code    Description    Project    File    Line    Suppres
>sion State
>Error    LNK2001    unresolved external symbol
>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlit
>e_try_3\sqlite_try_3\sqlite3.obj    1
>Severity    Code    Description    Project    File    Line    Suppres
>sion State
>Error    LNK1120    1 unresolved
>externals    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_3
>\Debug\sqlite_try_3.exe    1
>
>
>At some point before I started filling in the directories and such in
>Project, my code:
>sqlite3 *db;
>was errored out (underlined in red).  Now they are not erroring
>out.  I just get the two errors above when I compile.
>
>      From: zydeholic <[hidden email]>
> To: SQLite mailing list <[hidden email]>
> Sent: Friday, December 21, 2018 3:46 PM
> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>Ok, to further define my goals, I am not looking to compile the files
>into a final EXE, unless that is the only way I can use it with my
>program.  I want to tap into the sqlite functionality from a C++
>application I am writing.
>
>I suppose I need to use the DLL that I downloaded, but have never
>used an external library before, not where I had to tell the compiler
>how to talk to it.
>So, SQLite, backend database.  I will do the front end stuff in my
>code.  Hopefully this clarifies something.
>
>
>      From: Larry Brasfield <[hidden email]>
> To: "[hidden email]" <sqlite-
>[hidden email]>
> Sent: Friday, December 21, 2018 1:02 PM
> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>Zydeholic wrote:
>➢ I compile and get one error:
>Severity    Code    Description    Project    File    Line    Suppres
>sion State Error    LNK2001    unresolved external symbol
>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlit
>e_try_3\sqlite_try_3\sqlite3.obj    1
>
>That symbol is declared, and a definition for the object so named is
>coded, in the sqlite3.c amalgamation without the possibility of
>omission by the preprocessor.  So I find it exceedingly strange that
>your link operation is complaining of an unresolvable reference to
>that symbol in sqlite3.obj.  For a C compilation, which you certainly
>should be using for that C source, the name should be undecorated,
>except for the leading underscore, just as it appears in the above-
>quoted error message.  This leads me to believe you are doing
>something too strange for anybody to guess with the information
>provided so far.
>
>You may notice that this thread is misnamed for this latest
>difficulty, since the code does actually compile.  If I had to name
>it accurately, it would be called: [off topic] Need build
>instructions for my project which uses SQLite in a development
>environment differing from the one actually supported by the SQLite
>team.
>
>Some questions to ask yourself as you attempt to sort this out:
>1. Am I compiling the .c sources as C language?
>2. Have I modified the sources everybody assumes are as released by
>the SQLite team?
>3. What does insight does dumpbin.exe, (the VC command line tool for
>showing compiled image content), provide into my link errors?
>4. How does my sqlite3.obj differ from the one I get following step
>19 at https://www.sqlite.org/cli.html , and why?
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
>
>
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users


   
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Need setup code for VC++ 2017 that will ACTUALLY COMPILE

Keith Medcalf

No problem.  You can of course omit the sqlite3.c file  and use the sqlite3.lib/sqlite3.dll combination, but your application will then be dependent on the version of sqlite3.dll that happens to be found at runtime and the options that were used to compile it.  If you use the sqlite3.c directly then your application will be statically linked and not dependent on the external dll file.  Plus with the sqlite3.c compiled statically you will be able to define exactly what sqlite3 features you want to include whereas with the .lib/.dll you will use whatever options happen to have been used to build that dll.


---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume.


>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>[hidden email]] On Behalf Of zydeholic
>Sent: Friday, 21 December, 2018 18:02
>To: SQLite mailing list
>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>Holy Chewbacca,
>I removed the .c file from the project and I got an error free
>compile.  Yes, I knew my code would not do anything, except prove
>that I was able to talk through to something.  I'll try your code
>below.
>
>Thanks MUCHO.
>
>David
>
>      From: Keith Medcalf <[hidden email]>
> To: SQLite mailing list <[hidden email]>
> Sent: Friday, December 21, 2018 4:53 PM
> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>
>First of all use EITHER the source (.c) OR the precomiled dynamic
>link library (.dll/.lib).  Not both.
>
>The .c file contains the code to the sqlite3 database engine.  The
>DLL contains this code compiled to a Dynamic Link Library.  The LIB
>file tells your application how to find the code in the dynamic link
>library.  If you use both, only god (and probably not ever her) knows
>what will happen.
>
>Here is a C++ program that actually does something (yours does
>not).  It compiles and runs when using a real compiler on Winders
>(GCC).  It has no error checking.  But it does call "C" functions
>from "C++".  Simply compile it (in C++ mode) together with the
>sqlite3.c (in C mode) and link them all together.
>
>
>#include "sqlite3.h"
>#include <fstream>
>#include <iostream>
>using namespace std;
>
>int main()
>{
>    sqlite3 *db;
>    sqlite3_stmt *stmt;
>    sqlite3_open(":memory:", &db);
>    sqlite3_prepare_v2(db, "select sqlite_source_id();", -1, &stmt,
>NULL);
>    sqlite3_step(stmt);
>    cout << sqlite3_column_text(stmt, 0);
>    sqlite3_finalize(stmt);
>    sqlite3_close(db);
>}
>
>
>
>
>---
>The fact that there's a Highway to Hell but only a Stairway to Heaven
>says a lot about anticipated traffic volume.
>
>
>>-----Original Message-----
>>From: sqlite-users [mailto:sqlite-users-
>>[hidden email]] On Behalf Of zydeholic
>>Sent: Friday, 21 December, 2018 17:26
>>To: SQLite mailing list
>>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>ACTUALLY COMPILE
>>
>>My cpp code consists of this at the moment:
>>#include "sqlite3.h"
>>#include <fstream>
>>#include <iostream>
>>using namespace std;
>>
>>int main()
>>{
>>    sqlite3 *db;
>>}
>>
>>I have added sqlite3.h to my header files.I have added sqlite3.c to
>>my source files.I've moved these two files, plus sqlite3.dll and
>>sqlite3.lib into the same directory as these other files:
>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3
>>
>>In Project, I've made the following settings:VC++
>>Directories>>Library
>>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;C
>/
>>C++>>Additional Include
>>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
>>C/C++>>Precompiled Headers>>Not using precompiled headers (all
>>configurations, all platforms).
>>Linker>>Input>>Additional Dependencies>>sqlite3.lib
>>I now get two errors when I compile:
>>Severity    Code    Description    Project    File    Line    Suppre
>s
>>sion State
>>Error    LNK2001    unresolved external symbol
>>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqli
>t
>>e_try_3\sqlite_try_3\sqlite3.obj    1
>>Severity    Code    Description    Project    File    Line    Suppre
>s
>>sion State
>>Error    LNK1120    1 unresolved
>>externals    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_
>3
>>\Debug\sqlite_try_3.exe    1
>>
>>
>>At some point before I started filling in the directories and such
>in
>>Project, my code:
>>sqlite3 *db;
>>was errored out (underlined in red).  Now they are not erroring
>>out.  I just get the two errors above when I compile.
>>
>>      From: zydeholic <[hidden email]>
>> To: SQLite mailing list <[hidden email]>
>> Sent: Friday, December 21, 2018 3:46 PM
>> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>ACTUALLY COMPILE
>>
>>Ok, to further define my goals, I am not looking to compile the
>files
>>into a final EXE, unless that is the only way I can use it with my
>>program.  I want to tap into the sqlite functionality from a C++
>>application I am writing.
>>
>>I suppose I need to use the DLL that I downloaded, but have never
>>used an external library before, not where I had to tell the
>compiler
>>how to talk to it.
>>So, SQLite, backend database.  I will do the front end stuff in my
>>code.  Hopefully this clarifies something.
>>
>>
>>      From: Larry Brasfield <[hidden email]>
>> To: "[hidden email]" <sqlite-
>>[hidden email]>
>> Sent: Friday, December 21, 2018 1:02 PM
>> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>ACTUALLY COMPILE
>>
>>Zydeholic wrote:
>>➢ I compile and get one error:
>>Severity    Code    Description    Project    File    Line    Suppre
>s
>>sion State Error    LNK2001    unresolved external symbol
>>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqli
>t
>>e_try_3\sqlite_try_3\sqlite3.obj    1
>>
>>That symbol is declared, and a definition for the object so named is
>>coded, in the sqlite3.c amalgamation without the possibility of
>>omission by the preprocessor.  So I find it exceedingly strange that
>>your link operation is complaining of an unresolvable reference to
>>that symbol in sqlite3.obj.  For a C compilation, which you
>certainly
>>should be using for that C source, the name should be undecorated,
>>except for the leading underscore, just as it appears in the above-
>>quoted error message.  This leads me to believe you are doing
>>something too strange for anybody to guess with the information
>>provided so far.
>>
>>You may notice that this thread is misnamed for this latest
>>difficulty, since the code does actually compile.  If I had to name
>>it accurately, it would be called: [off topic] Need build
>>instructions for my project which uses SQLite in a development
>>environment differing from the one actually supported by the SQLite
>>team.
>>
>>Some questions to ask yourself as you attempt to sort this out:
>>1. Am I compiling the .c sources as C language?
>>2. Have I modified the sources everybody assumes are as released by
>>the SQLite team?
>>3. What does insight does dumpbin.exe, (the VC command line tool for
>>showing compiled image content), provide into my link errors?
>>4. How does my sqlite3.obj differ from the one I get following step
>>19 at https://www.sqlite.org/cli.html , and why?
>>_______________________________________________
>>sqlite-users mailing list
>>[hidden email]
>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>
>>
>>
>>
>>
>>_______________________________________________
>>sqlite-users mailing list
>>[hidden email]
>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Need setup code for VC++ 2017 that will ACTUALLY COMPILE

zydeholic
So, and sorry if this is covering ground already covered, but if I wanted to compile my own DLL and .lib file, I would do what exactly?
Just not tell it about the .lib dependencies?  And not put the lib and dll files in my project directory?  Sorry for my denseness.  I'm very knew to this route of doing things, old as that route may be.


      From: Keith Medcalf <[hidden email]>
 To: SQLite mailing list <[hidden email]>
 Sent: Friday, December 21, 2018 5:15 PM
 Subject: Re: [sqlite] Need setup code for VC++ 2017 that will ACTUALLY COMPILE
   

No problem.  You can of course omit the sqlite3.c file  and use the sqlite3.lib/sqlite3.dll combination, but your application will then be dependent on the version of sqlite3.dll that happens to be found at runtime and the options that were used to compile it.  If you use the sqlite3.c directly then your application will be statically linked and not dependent on the external dll file.  Plus with the sqlite3.c compiled statically you will be able to define exactly what sqlite3 features you want to include whereas with the .lib/.dll you will use whatever options happen to have been used to build that dll.


---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume.


>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>[hidden email]] On Behalf Of zydeholic
>Sent: Friday, 21 December, 2018 18:02
>To: SQLite mailing list
>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>Holy Chewbacca,
>I removed the .c file from the project and I got an error free
>compile.  Yes, I knew my code would not do anything, except prove
>that I was able to talk through to something.  I'll try your code
>below.
>
>Thanks MUCHO.
>
>David
>
>      From: Keith Medcalf <[hidden email]>
> To: SQLite mailing list <[hidden email]>
> Sent: Friday, December 21, 2018 4:53 PM
> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>
>First of all use EITHER the source (.c) OR the precomiled dynamic
>link library (.dll/.lib).  Not both.
>
>The .c file contains the code to the sqlite3 database engine.  The
>DLL contains this code compiled to a Dynamic Link Library.  The LIB
>file tells your application how to find the code in the dynamic link
>library.  If you use both, only god (and probably not ever her) knows
>what will happen.
>
>Here is a C++ program that actually does something (yours does
>not).  It compiles and runs when using a real compiler on Winders
>(GCC).  It has no error checking.  But it does call "C" functions
>from "C++".  Simply compile it (in C++ mode) together with the
>sqlite3.c (in C mode) and link them all together.
>
>
>#include "sqlite3.h"
>#include <fstream>
>#include <iostream>
>using namespace std;
>
>int main()
>{
>    sqlite3 *db;
>    sqlite3_stmt *stmt;
>    sqlite3_open(":memory:", &db);
>    sqlite3_prepare_v2(db, "select sqlite_source_id();", -1, &stmt,
>NULL);
>    sqlite3_step(stmt);
>    cout << sqlite3_column_text(stmt, 0);
>    sqlite3_finalize(stmt);
>    sqlite3_close(db);
>}
>
>
>
>
>---
>The fact that there's a Highway to Hell but only a Stairway to Heaven
>says a lot about anticipated traffic volume.
>
>
>>-----Original Message-----
>>From: sqlite-users [mailto:sqlite-users-
>>[hidden email]] On Behalf Of zydeholic
>>Sent: Friday, 21 December, 2018 17:26
>>To: SQLite mailing list
>>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>ACTUALLY COMPILE
>>
>>My cpp code consists of this at the moment:
>>#include "sqlite3.h"
>>#include <fstream>
>>#include <iostream>
>>using namespace std;
>>
>>int main()
>>{
>>    sqlite3 *db;
>>}
>>
>>I have added sqlite3.h to my header files.I have added sqlite3.c to
>>my source files.I've moved these two files, plus sqlite3.dll and
>>sqlite3.lib into the same directory as these other files:
>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3
>>
>>In Project, I've made the following settings:VC++
>>Directories>>Library
>>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;C
>/
>>C++>>Additional Include
>>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
>>C/C++>>Precompiled Headers>>Not using precompiled headers (all
>>configurations, all platforms).
>>Linker>>Input>>Additional Dependencies>>sqlite3.lib
>>I now get two errors when I compile:
>>Severity    Code    Description    Project    File    Line    Suppre
>s
>>sion State
>>Error    LNK2001    unresolved external symbol
>>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqli
>t
>>e_try_3\sqlite_try_3\sqlite3.obj    1
>>Severity    Code    Description    Project    File    Line    Suppre
>s
>>sion State
>>Error    LNK1120    1 unresolved
>>externals    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try_
>3
>>\Debug\sqlite_try_3.exe    1
>>
>>
>>At some point before I started filling in the directories and such
>in
>>Project, my code:
>>sqlite3 *db;
>>was errored out (underlined in red).  Now they are not erroring
>>out.  I just get the two errors above when I compile.
>>
>>      From: zydeholic <[hidden email]>
>> To: SQLite mailing list <[hidden email]>
>> Sent: Friday, December 21, 2018 3:46 PM
>> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>ACTUALLY COMPILE
>>
>>Ok, to further define my goals, I am not looking to compile the
>files
>>into a final EXE, unless that is the only way I can use it with my
>>program.  I want to tap into the sqlite functionality from a C++
>>application I am writing.
>>
>>I suppose I need to use the DLL that I downloaded, but have never
>>used an external library before, not where I had to tell the
>compiler
>>how to talk to it.
>>So, SQLite, backend database.  I will do the front end stuff in my
>>code.  Hopefully this clarifies something.
>>
>>
>>      From: Larry Brasfield <[hidden email]>
>> To: "[hidden email]" <sqlite-
>>[hidden email]>
>> Sent: Friday, December 21, 2018 1:02 PM
>> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>ACTUALLY COMPILE
>>
>>Zydeholic wrote:
>>➢ I compile and get one error:
>>Severity    Code    Description    Project    File    Line    Suppre
>s
>>sion State Error    LNK2001    unresolved external symbol
>>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sqli
>t
>>e_try_3\sqlite_try_3\sqlite3.obj    1
>>
>>That symbol is declared, and a definition for the object so named is
>>coded, in the sqlite3.c amalgamation without the possibility of
>>omission by the preprocessor.  So I find it exceedingly strange that
>>your link operation is complaining of an unresolvable reference to
>>that symbol in sqlite3.obj.  For a C compilation, which you
>certainly
>>should be using for that C source, the name should be undecorated,
>>except for the leading underscore, just as it appears in the above-
>>quoted error message.  This leads me to believe you are doing
>>something too strange for anybody to guess with the information
>>provided so far.
>>
>>You may notice that this thread is misnamed for this latest
>>difficulty, since the code does actually compile.  If I had to name
>>it accurately, it would be called: [off topic] Need build
>>instructions for my project which uses SQLite in a development
>>environment differing from the one actually supported by the SQLite
>>team.
>>
>>Some questions to ask yourself as you attempt to sort this out:
>>1. Am I compiling the .c sources as C language?
>>2. Have I modified the sources everybody assumes are as released by
>>the SQLite team?
>>3. What does insight does dumpbin.exe, (the VC command line tool for
>>showing compiled image content), provide into my link errors?
>>4. How does my sqlite3.obj differ from the one I get following step
>>19 at https://www.sqlite.org/cli.html , and why?
>>_______________________________________________
>>sqlite-users mailing list
>>[hidden email]
>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>
>>
>>
>>
>>
>>_______________________________________________
>>sqlite-users mailing list
>>[hidden email]
>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users


   
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Need setup code for VC++ 2017 that will ACTUALLY COMPILE

Keith Medcalf

To compile the sqlite3.c file to sqlite3.dll you need to create a separate project that will "compile" sqlite3.c (as a "C" file) with the dependency sqlite3.h and tell VS to output a "DLL" / Dynamic Link Library rather than an EXE file.  The ".lib" is the built from the symbols exported into this DLL.  

I presume that you can set these options in the VS gooey somewhere but where I do not know since I only use the VS gooey under duress.

You also somehow have to tell VS to "export" the sqlite3_api (perhaps by defining the compiler symbol SQLITE_API=__declspec(dllexport) as one would do with GCC) or by adding a dependency in the gooey to the sqlite3.def file (which contains a list of the symbols that should be exported) and the .def file is then also used to create the .lib file.

If I were to build the sqlite3.dll using the command line compiler (CL), I would define the symbol SQLITE_API=__declspec(dllexport) and compile to a DLL (rather than an EXE).  The output of the compile step is the .DLL and the .LIB file to go with it (plus perhaps a manifest that you have to attach back to the DLL in some cases, though what those are are beyond me -- if there is and output manifest I just plop in back into the DLL as a matter of course).

Any "options" you want included when you compile the DLL are specified in the input to the sqlite3.c compile step (as defines).

---
The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume.


>-----Original Message-----
>From: sqlite-users [mailto:sqlite-users-
>[hidden email]] On Behalf Of zydeholic
>Sent: Friday, 21 December, 2018 18:29
>To: SQLite mailing list
>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>So, and sorry if this is covering ground already covered, but if I
>wanted to compile my own DLL and .lib file, I would do what exactly?
>Just not tell it about the .lib dependencies?  And not put the lib
>and dll files in my project directory?  Sorry for my denseness.  I'm
>very knew to this route of doing things, old as that route may be.
>
>
>      From: Keith Medcalf <[hidden email]>
> To: SQLite mailing list <[hidden email]>
> Sent: Friday, December 21, 2018 5:15 PM
> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>ACTUALLY COMPILE
>
>
>No problem.  You can of course omit the sqlite3.c file  and use the
>sqlite3.lib/sqlite3.dll combination, but your application will then
>be dependent on the version of sqlite3.dll that happens to be found
>at runtime and the options that were used to compile it.  If you use
>the sqlite3.c directly then your application will be statically
>linked and not dependent on the external dll file.  Plus with the
>sqlite3.c compiled statically you will be able to define exactly what
>sqlite3 features you want to include whereas with the .lib/.dll you
>will use whatever options happen to have been used to build that dll.
>
>
>---
>The fact that there's a Highway to Hell but only a Stairway to Heaven
>says a lot about anticipated traffic volume.
>
>
>>-----Original Message-----
>>From: sqlite-users [mailto:sqlite-users-
>>[hidden email]] On Behalf Of zydeholic
>>Sent: Friday, 21 December, 2018 18:02
>>To: SQLite mailing list
>>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>ACTUALLY COMPILE
>>
>>Holy Chewbacca,
>>I removed the .c file from the project and I got an error free
>>compile.  Yes, I knew my code would not do anything, except prove
>>that I was able to talk through to something.  I'll try your code
>>below.
>>
>>Thanks MUCHO.
>>
>>David
>>
>>      From: Keith Medcalf <[hidden email]>
>> To: SQLite mailing list <[hidden email]>
>> Sent: Friday, December 21, 2018 4:53 PM
>> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>ACTUALLY COMPILE
>>
>>
>>First of all use EITHER the source (.c) OR the precomiled dynamic
>>link library (.dll/.lib).  Not both.
>>
>>The .c file contains the code to the sqlite3 database engine.  The
>>DLL contains this code compiled to a Dynamic Link Library.  The LIB
>>file tells your application how to find the code in the dynamic link
>>library.  If you use both, only god (and probably not ever her)
>knows
>>what will happen.
>>
>>Here is a C++ program that actually does something (yours does
>>not).  It compiles and runs when using a real compiler on Winders
>>(GCC).  It has no error checking.  But it does call "C" functions
>>from "C++".  Simply compile it (in C++ mode) together with the
>>sqlite3.c (in C mode) and link them all together.
>>
>>
>>#include "sqlite3.h"
>>#include <fstream>
>>#include <iostream>
>>using namespace std;
>>
>>int main()
>>{
>>    sqlite3 *db;
>>    sqlite3_stmt *stmt;
>>    sqlite3_open(":memory:", &db);
>>    sqlite3_prepare_v2(db, "select sqlite_source_id();", -1, &stmt,
>>NULL);
>>    sqlite3_step(stmt);
>>    cout << sqlite3_column_text(stmt, 0);
>>    sqlite3_finalize(stmt);
>>    sqlite3_close(db);
>>}
>>
>>
>>
>>
>>---
>>The fact that there's a Highway to Hell but only a Stairway to
>Heaven
>>says a lot about anticipated traffic volume.
>>
>>
>>>-----Original Message-----
>>>From: sqlite-users [mailto:sqlite-users-
>>>[hidden email]] On Behalf Of zydeholic
>>>Sent: Friday, 21 December, 2018 17:26
>>>To: SQLite mailing list
>>>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>>ACTUALLY COMPILE
>>>
>>>My cpp code consists of this at the moment:
>>>#include "sqlite3.h"
>>>#include <fstream>
>>>#include <iostream>
>>>using namespace std;
>>>
>>>int main()
>>>{
>>>    sqlite3 *db;
>>>}
>>>
>>>I have added sqlite3.h to my header files.I have added sqlite3.c to
>>>my source files.I've moved these two files, plus sqlite3.dll and
>>>sqlite3.lib into the same directory as these other files:
>>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3
>>>
>>>In Project, I've made the following settings:VC++
>>>Directories>>Library
>>>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
>C
>>/
>>>C++>>Additional Include
>>>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
>>>C/C++>>Precompiled Headers>>Not using precompiled headers (all
>>>configurations, all platforms).
>>>Linker>>Input>>Additional Dependencies>>sqlite3.lib
>>>I now get two errors when I compile:
>>>Severity    Code    Description    Project    File    Line    Suppr
>e
>>s
>>>sion State
>>>Error    LNK2001    unresolved external symbol
>>>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sql
>i
>>t
>>>e_try_3\sqlite_try_3\sqlite3.obj    1
>>>Severity    Code    Description    Project    File    Line    Suppr
>e
>>s
>>>sion State
>>>Error    LNK1120    1 unresolved
>>>externals    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try
>_
>>3
>>>\Debug\sqlite_try_3.exe    1
>>>
>>>
>>>At some point before I started filling in the directories and such
>>in
>>>Project, my code:
>>>sqlite3 *db;
>>>was errored out (underlined in red).  Now they are not erroring
>>>out.  I just get the two errors above when I compile.
>>>
>>>      From: zydeholic <[hidden email]>
>>> To: SQLite mailing list <[hidden email]>
>>> Sent: Friday, December 21, 2018 3:46 PM
>>> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>>ACTUALLY COMPILE
>>>
>>>Ok, to further define my goals, I am not looking to compile the
>>files
>>>into a final EXE, unless that is the only way I can use it with my
>>>program.  I want to tap into the sqlite functionality from a C++
>>>application I am writing.
>>>
>>>I suppose I need to use the DLL that I downloaded, but have never
>>>used an external library before, not where I had to tell the
>>compiler
>>>how to talk to it.
>>>So, SQLite, backend database.  I will do the front end stuff in my
>>>code.  Hopefully this clarifies something.
>>>
>>>
>>>      From: Larry Brasfield <[hidden email]>
>>> To: "[hidden email]" <sqlite-
>>>[hidden email]>
>>> Sent: Friday, December 21, 2018 1:02 PM
>>> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
>>>ACTUALLY COMPILE
>>>
>>>Zydeholic wrote:
>>>➢ I compile and get one error:
>>>Severity    Code    Description    Project    File    Line    Suppr
>e
>>s
>>>sion State Error    LNK2001    unresolved external symbol
>>>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sql
>i
>>t
>>>e_try_3\sqlite_try_3\sqlite3.obj    1
>>>
>>>That symbol is declared, and a definition for the object so named
>is
>>>coded, in the sqlite3.c amalgamation without the possibility of
>>>omission by the preprocessor.  So I find it exceedingly strange
>that
>>>your link operation is complaining of an unresolvable reference to
>>>that symbol in sqlite3.obj.  For a C compilation, which you
>>certainly
>>>should be using for that C source, the name should be undecorated,
>>>except for the leading underscore, just as it appears in the above-
>>>quoted error message.  This leads me to believe you are doing
>>>something too strange for anybody to guess with the information
>>>provided so far.
>>>
>>>You may notice that this thread is misnamed for this latest
>>>difficulty, since the code does actually compile.  If I had to name
>>>it accurately, it would be called: [off topic] Need build
>>>instructions for my project which uses SQLite in a development
>>>environment differing from the one actually supported by the SQLite
>>>team.
>>>
>>>Some questions to ask yourself as you attempt to sort this out:
>>>1. Am I compiling the .c sources as C language?
>>>2. Have I modified the sources everybody assumes are as released by
>>>the SQLite team?
>>>3. What does insight does dumpbin.exe, (the VC command line tool
>for
>>>showing compiled image content), provide into my link errors?
>>>4. How does my sqlite3.obj differ from the one I get following step
>>>19 at https://www.sqlite.org/cli.html , and why?
>>>_______________________________________________
>>>sqlite-users mailing list
>>>[hidden email]
>>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
>users
>>>
>>>
>>>
>>>
>>>
>>>_______________________________________________
>>>sqlite-users mailing list
>>>[hidden email]
>>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
>users
>>
>>
>>
>>_______________________________________________
>>sqlite-users mailing list
>>[hidden email]
>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>
>>
>>
>>_______________________________________________
>>sqlite-users mailing list
>>[hidden email]
>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
>_______________________________________________
>sqlite-users mailing list
>[hidden email]
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: Need setup code for VC++ 2017 that will ACTUALLY COMPILE

Igor Korot
Or for the simplicity sake - just add the sqlite3.* files to the
project and compile everything.
But then you will NOT need to follow the instruction in my previous email.

As Keith said, you should choose the path and follow it - either use
the source code
or use precompiled library.

Thank you.

On Fri, Dec 21, 2018 at 8:03 PM Keith Medcalf <[hidden email]> wrote:

>
>
> To compile the sqlite3.c file to sqlite3.dll you need to create a separate project that will "compile" sqlite3.c (as a "C" file) with the dependency sqlite3.h and tell VS to output a "DLL" / Dynamic Link Library rather than an EXE file.  The ".lib" is the built from the symbols exported into this DLL.
>
> I presume that you can set these options in the VS gooey somewhere but where I do not know since I only use the VS gooey under duress.
>
> You also somehow have to tell VS to "export" the sqlite3_api (perhaps by defining the compiler symbol SQLITE_API=__declspec(dllexport) as one would do with GCC) or by adding a dependency in the gooey to the sqlite3.def file (which contains a list of the symbols that should be exported) and the .def file is then also used to create the .lib file.
>
> If I were to build the sqlite3.dll using the command line compiler (CL), I would define the symbol SQLITE_API=__declspec(dllexport) and compile to a DLL (rather than an EXE).  The output of the compile step is the .DLL and the .LIB file to go with it (plus perhaps a manifest that you have to attach back to the DLL in some cases, though what those are are beyond me -- if there is and output manifest I just plop in back into the DLL as a matter of course).
>
> Any "options" you want included when you compile the DLL are specified in the input to the sqlite3.c compile step (as defines).
>
> ---
> The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume.
>
>
> >-----Original Message-----
> >From: sqlite-users [mailto:sqlite-users-
> >[hidden email]] On Behalf Of zydeholic
> >Sent: Friday, 21 December, 2018 18:29
> >To: SQLite mailing list
> >Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
> >ACTUALLY COMPILE
> >
> >So, and sorry if this is covering ground already covered, but if I
> >wanted to compile my own DLL and .lib file, I would do what exactly?
> >Just not tell it about the .lib dependencies?  And not put the lib
> >and dll files in my project directory?  Sorry for my denseness.  I'm
> >very knew to this route of doing things, old as that route may be.
> >
> >
> >      From: Keith Medcalf <[hidden email]>
> > To: SQLite mailing list <[hidden email]>
> > Sent: Friday, December 21, 2018 5:15 PM
> > Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
> >ACTUALLY COMPILE
> >
> >
> >No problem.  You can of course omit the sqlite3.c file  and use the
> >sqlite3.lib/sqlite3.dll combination, but your application will then
> >be dependent on the version of sqlite3.dll that happens to be found
> >at runtime and the options that were used to compile it.  If you use
> >the sqlite3.c directly then your application will be statically
> >linked and not dependent on the external dll file.  Plus with the
> >sqlite3.c compiled statically you will be able to define exactly what
> >sqlite3 features you want to include whereas with the .lib/.dll you
> >will use whatever options happen to have been used to build that dll.
> >
> >
> >---
> >The fact that there's a Highway to Hell but only a Stairway to Heaven
> >says a lot about anticipated traffic volume.
> >
> >
> >>-----Original Message-----
> >>From: sqlite-users [mailto:sqlite-users-
> >>[hidden email]] On Behalf Of zydeholic
> >>Sent: Friday, 21 December, 2018 18:02
> >>To: SQLite mailing list
> >>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
> >>ACTUALLY COMPILE
> >>
> >>Holy Chewbacca,
> >>I removed the .c file from the project and I got an error free
> >>compile.  Yes, I knew my code would not do anything, except prove
> >>that I was able to talk through to something.  I'll try your code
> >>below.
> >>
> >>Thanks MUCHO.
> >>
> >>David
> >>
> >>      From: Keith Medcalf <[hidden email]>
> >> To: SQLite mailing list <[hidden email]>
> >> Sent: Friday, December 21, 2018 4:53 PM
> >> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
> >>ACTUALLY COMPILE
> >>
> >>
> >>First of all use EITHER the source (.c) OR the precomiled dynamic
> >>link library (.dll/.lib).  Not both.
> >>
> >>The .c file contains the code to the sqlite3 database engine.  The
> >>DLL contains this code compiled to a Dynamic Link Library.  The LIB
> >>file tells your application how to find the code in the dynamic link
> >>library.  If you use both, only god (and probably not ever her)
> >knows
> >>what will happen.
> >>
> >>Here is a C++ program that actually does something (yours does
> >>not).  It compiles and runs when using a real compiler on Winders
> >>(GCC).  It has no error checking.  But it does call "C" functions
> >>from "C++".  Simply compile it (in C++ mode) together with the
> >>sqlite3.c (in C mode) and link them all together.
> >>
> >>
> >>#include "sqlite3.h"
> >>#include <fstream>
> >>#include <iostream>
> >>using namespace std;
> >>
> >>int main()
> >>{
> >>    sqlite3 *db;
> >>    sqlite3_stmt *stmt;
> >>    sqlite3_open(":memory:", &db);
> >>    sqlite3_prepare_v2(db, "select sqlite_source_id();", -1, &stmt,
> >>NULL);
> >>    sqlite3_step(stmt);
> >>    cout << sqlite3_column_text(stmt, 0);
> >>    sqlite3_finalize(stmt);
> >>    sqlite3_close(db);
> >>}
> >>
> >>
> >>
> >>
> >>---
> >>The fact that there's a Highway to Hell but only a Stairway to
> >Heaven
> >>says a lot about anticipated traffic volume.
> >>
> >>
> >>>-----Original Message-----
> >>>From: sqlite-users [mailto:sqlite-users-
> >>>[hidden email]] On Behalf Of zydeholic
> >>>Sent: Friday, 21 December, 2018 17:26
> >>>To: SQLite mailing list
> >>>Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
> >>>ACTUALLY COMPILE
> >>>
> >>>My cpp code consists of this at the moment:
> >>>#include "sqlite3.h"
> >>>#include <fstream>
> >>>#include <iostream>
> >>>using namespace std;
> >>>
> >>>int main()
> >>>{
> >>>    sqlite3 *db;
> >>>}
> >>>
> >>>I have added sqlite3.h to my header files.I have added sqlite3.c to
> >>>my source files.I've moved these two files, plus sqlite3.dll and
> >>>sqlite3.lib into the same directory as these other files:
> >>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3
> >>>
> >>>In Project, I've made the following settings:VC++
> >>>Directories>>Library
> >>>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
> >C
> >>/
> >>>C++>>Additional Include
> >>>Directories>>C:\users\dsnos\source\repos\sqlite_try_3\sqlite_try_3;
> >>>C/C++>>Precompiled Headers>>Not using precompiled headers (all
> >>>configurations, all platforms).
> >>>Linker>>Input>>Additional Dependencies>>sqlite3.lib
> >>>I now get two errors when I compile:
> >>>Severity    Code    Description    Project    File    Line    Suppr
> >e
> >>s
> >>>sion State
> >>>Error    LNK2001    unresolved external symbol
> >>>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sql
> >i
> >>t
> >>>e_try_3\sqlite_try_3\sqlite3.obj    1
> >>>Severity    Code    Description    Project    File    Line    Suppr
> >e
> >>s
> >>>sion State
> >>>Error    LNK1120    1 unresolved
> >>>externals    sqlite_try_3    C:\Users\DSNoS\source\repos\sqlite_try
> >_
> >>3
> >>>\Debug\sqlite_try_3.exe    1
> >>>
> >>>
> >>>At some point before I started filling in the directories and such
> >>in
> >>>Project, my code:
> >>>sqlite3 *db;
> >>>was errored out (underlined in red).  Now they are not erroring
> >>>out.  I just get the two errors above when I compile.
> >>>
> >>>      From: zydeholic <[hidden email]>
> >>> To: SQLite mailing list <[hidden email]>
> >>> Sent: Friday, December 21, 2018 3:46 PM
> >>> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
> >>>ACTUALLY COMPILE
> >>>
> >>>Ok, to further define my goals, I am not looking to compile the
> >>files
> >>>into a final EXE, unless that is the only way I can use it with my
> >>>program.  I want to tap into the sqlite functionality from a C++
> >>>application I am writing.
> >>>
> >>>I suppose I need to use the DLL that I downloaded, but have never
> >>>used an external library before, not where I had to tell the
> >>compiler
> >>>how to talk to it.
> >>>So, SQLite, backend database.  I will do the front end stuff in my
> >>>code.  Hopefully this clarifies something.
> >>>
> >>>
> >>>      From: Larry Brasfield <[hidden email]>
> >>> To: "[hidden email]" <sqlite-
> >>>[hidden email]>
> >>> Sent: Friday, December 21, 2018 1:02 PM
> >>> Subject: Re: [sqlite] Need setup code for VC++ 2017 that will
> >>>ACTUALLY COMPILE
> >>>
> >>>Zydeholic wrote:
> >>>➢ I compile and get one error:
> >>>Severity    Code    Description    Project    File    Line    Suppr
> >e
> >>s
> >>>sion State Error    LNK2001    unresolved external symbol
> >>>_sqlite3_version    sqlite_try_3    C:\Users\DSNoS\source\repos\sql
> >i
> >>t
> >>>e_try_3\sqlite_try_3\sqlite3.obj    1
> >>>
> >>>That symbol is declared, and a definition for the object so named
> >is
> >>>coded, in the sqlite3.c amalgamation without the possibility of
> >>>omission by the preprocessor.  So I find it exceedingly strange
> >that
> >>>your link operation is complaining of an unresolvable reference to
> >>>that symbol in sqlite3.obj.  For a C compilation, which you
> >>certainly
> >>>should be using for that C source, the name should be undecorated,
> >>>except for the leading underscore, just as it appears in the above-
> >>>quoted error message.  This leads me to believe you are doing
> >>>something too strange for anybody to guess with the information
> >>>provided so far.
> >>>
> >>>You may notice that this thread is misnamed for this latest
> >>>difficulty, since the code does actually compile.  If I had to name
> >>>it accurately, it would be called: [off topic] Need build
> >>>instructions for my project which uses SQLite in a development
> >>>environment differing from the one actually supported by the SQLite
> >>>team.
> >>>
> >>>Some questions to ask yourself as you attempt to sort this out:
> >>>1. Am I compiling the .c sources as C language?
> >>>2. Have I modified the sources everybody assumes are as released by
> >>>the SQLite team?
> >>>3. What does insight does dumpbin.exe, (the VC command line tool
> >for
> >>>showing compiled image content), provide into my link errors?
> >>>4. How does my sqlite3.obj differ from the one I get following step
> >>>19 at https://www.sqlite.org/cli.html , and why?
> >>>_______________________________________________
> >>>sqlite-users mailing list
> >>>[hidden email]
> >>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
> >users
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>_______________________________________________
> >>>sqlite-users mailing list
> >>>[hidden email]
> >>>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-
> >users
> >>
> >>
> >>
> >>_______________________________________________
> >>sqlite-users mailing list
> >>[hidden email]
> >>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >>
> >>
> >>
> >>_______________________________________________
> >>sqlite-users mailing list
> >>[hidden email]
> >>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >
> >
> >
> >_______________________________________________
> >sqlite-users mailing list
> >[hidden email]
> >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> >
> >
> >
> >_______________________________________________
> >sqlite-users mailing list
> >[hidden email]
> >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>
>
> _______________________________________________
> sqlite-users mailing list
> [hidden email]
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
12