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.

Reply via email to