On Sun, Mar 1, 2015 at 9:22 PM, Keith Medcalf <kmedcalf at dessus.com> wrote:

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


1) the @X is the size of paramters pushed on the stack.
2) (something else in another mail that irked me)  It's not a 'default
calling convention for windows' it's a default calling convention for some
compilers; and doesn't have be even be on windows.

there are usually command line options to set default calling conventions
to fix it; and it should be well defined in the header so long as both
sources includes the same prototypes and have the same settings it should
work.

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.
>
>
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>

Reply via email to