>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.




Reply via email to