>I do not know if this is the case, but typically Windows creates names >like >_sqlite3_db_filename at X (where X is a number) if a function is defined as >stdcall. It doesn't *have* to do this, but that's the convention used by
the <symbol>@X is used to include the ordinal reference (@X) in the symbol since you can link by either name or ordinal (or, in the case of specially constructed libraries, by both having to match). This is not, however, the "normal" case. The normal case is to export symbols only and link the modules at load time by name. This syntax is used specifically so that when you add a new entry ordinal to a dll, it does not get inserted into the name table in default order, but rather that symbols keep their previous version ordinals so that intra-version trampolines contained in link libraries will continue to work between different versions of the load library. --- Theory is when you know everything but nothing works. Practice is when everything works but no one knows why. Sometimes theory and practice are combined: nothing works and no one knows why.