Problems compiling sqlite-d

Adam D. Ruppe via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jan 29 19:07:22 PST 2017


On Monday, 30 January 2017 at 02:46:34 UTC, Nestor wrote:
> Well, I had downloaded the github version a few days back but 
> yesterday managed to get dub to fetch properly, so I just 
> fetched package arsd, and took the units from there.

Oh, that is ancient and not even mine - I don't have access to 
it, it was set up by a third party years ago!


> d:\prj\sqltest2\source>dmd app

That is always wrong unless your entire program consists *only* 
of app.d. When compiling, you need to have imported modules 
available or you'll see "module foo is found in file foo.d that 
cannot be found", and when linking, you need to have the code 
available or you'll see "Symbol Undefined". Since compiling and 
linking are done in the same step unless you ask it not to, 
missing modules may lead to one, the other, or both.

The easiest solution is to pass all the modules to the compiler 
at once. Then it will be able to find them for import and will 
compile and link them automatically. If you link separately (such 
as to a .lib or .dll), you can specify them rather than all the 
.d files, but it still needs the .d for the import!

Whether it is library modules or another module in your own file, 
it is the same, they all need to be there.


> If I specify all source files, there are even more problems:
>  Error 42: Symbol Undefined _sqlite3_open

It apparently couldn't find sqlite3.lib.

> Files sqlite3.{def|dll|lib} are on both source/ and 
> source/arsd/ (just in case)

Try specifying it on the command line too:

dmd app.d database.d sqlite.d sqlite3.lib

Though this may still require sqlite3.dll there too, unless it 
was built statically.


More information about the Digitalmars-d-learn mailing list