"entry point offerings" = C API (I just got creative on how I articulated this)

Here is the deal.... or maybe should I say architecture....

Business app talks to -> mono -> mono (ado.net adapter) -> native lib via 
interop

My app targets 2.0 mono for all platforms.  I am using the 
(http://sqlite.phxsoftware.com/) sqlite ado.net provider for both windows and 
linux.  Originally I messed up and linked up the all inclusive lib with this 
thing to my business app.  Then I realized I needed to run the all "managed" 
ado.net provider.  All fine and good.  I then run my app on windows and have no 
issues with this entry point not being found on windows.  It just works happily.

As advertised, I move my code over to Ubutu 8.10 and the .NET mono runtime 
complains about the missing entry point in the sqlite library that loaded up.  
So I go and download the latest sqlite 3 code.  That gets me to the entry point 
offering missing that you are helping me with.  You then tell me to go define 
that symbol in my c source file.... I do recompile, reinstall (sudo make 
install), boom..... the problem still occurs. (although I still need to check 
that the entry point actually was compiled in still)

I go through my entire linux system to find where ALL shared sqlite3 libs are 
located.  I am thinking, let me remove all the old ones (although dangerous.. 
or do you guys keep ordinal order in your sqlite dll to keep backwards 
compability?) and just make sure my /usr/lib has my newly built.  I do this and 
still get the problem.

I start thinking... why am I using the latest sqlite binaries on both platforms 
but one has this dllimport (api offering) but linux does not by default.  Why 
have the sqlite guys not compiled with the same flags with this api feature on 
both platforms.  So I thought, I better notify them of this.  I also thought I 
would write the mono guys to.  I figure, maybe the groups will make the same 
code at the .NET managed level run the same on all platforms via releasong 
compiled code that had the same defines on the c side.  I just personally 
thought it was ambiguous for you guys to be releasing the same version lib that 
works differently just because of platform?   I thought the ado.net guys should 
know as well so they might post information about this potential snafu!  From 
my humble opinion, it would be nice from the business apps dev perspective if 
the code you wrote that worked on mono windows worked the same on linux with no 
crazy library fun like I am having to do right now.  Sure, having knowledge is 
one thing, but having to use the vastness of mine detracts from time I need to 
be using building apps to help sqlite, ado.net sqlite, and mono look awesome by 
releasing more apps on their technology.

At this point I am curious why you guys release a different lib of the same 
version with different features for each given platform?

And yeah.. I do get the tech... working on compilers (specifically C/C++) will 
help you with tech realization at all levels! : - )  But you adding that in is 
VERY helpful, it cuts the ambiguity in your communication.

Allan

> Date: Sun, 8 Feb 2009 14:34:17 -0800
> From: [email protected]
> To: [email protected]
> Subject: Re: [sqlite] Question on missing Entry Point for Sqlite 3
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> W Allan Edwards wrote:
> > I find it odd you have different expected behavior for the same code on 
> > each different platform.
> 
> What specifically are you referring to there?
> 
> > The windows version works great... when I move the "same" code over to
> the mono runtime (of the same version) on linux... it has this exception.
> 
> The point you are missing is that the the provider speaks to a native
> code shared library.  The provider code will behave identically but the
> shared library is native code and could have been compiled many
> different ways.  Your underlying issue is solely because the Windows
> SQLite dll has compilation flags set such that the symbol is present and
> Linux such that it is not.
> 
> > Between sqlite, mono, and the mono ado.net sqlite adapter group, you would 
> > think that behavior for the same versioned libs would be the same across 
> > Windows, Linux, and MacOS.  
> 
> This has nothing to do with behaviour.  Your error message is due to a
> runtime linking error.  The mono code is using GetProcAddress/dlsym
> trying to find a symbol in the native code DLL and failing on Linux.
> 
> > Does the windows compilation of sqlite 3 (latest source include this entry 
> > point?)
> > Does the linux compliation of sqlite 3 (latest source include this entry 
> > point?)
> 
> The SQLite *source code* includes the functionality.  For the shared
> library to include the functionality (and symbol) compile time flags
> have to be set.  http://www.sqlite.org/compile.html  The page I
> originally pointed you at makes it quite clear -
> http://www.sqlite.org/c3ref/column_database_name.html
> 
> > why does the same .NET code not work on Linux with no modification or 
> > recompile?  I am literally using the SAME managed library from the ADO.nET 
> > group.
> 
> The SQLite shared library is unmanaged code.  It will have whatever
> functionality it was compiled with.  The shared library is not cross
> platform because it talks to native operating system functionality.  You
> cannot use the Windows shared library on MacOS or the MacOS one on
> Linux, or the Linux one on Windows etc.
> 
> > So does the sqlite team have different entry point offerings for each 
> > platform of the same sqlite database version?
> 
> SQLite doesn't have "entry point offerings" whatever you think that
> means.  The SQLite library has numerous functions, structures and
> defined constants in the C programming language as defined in the
> documentation at http://sqlite.org/c3ref/intro.html  When producing the
> compiled library you can include and exclude parts of the API as defined
> in http://www.sqlite.org/compile.html
> 
> Your mono adapter is assuming that sqlite3_column_database_name and
> friends are present in the shared library and gets the error you saw if
> not.  The Windows DLL downloaded from sqlite.org does include it by
> default while other compilations don't by default.  But whoever compiles
> SQLite can set it to whatever they want.
> 
> Roger
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
> 
> iEYEARECAAYFAkmPXeYACgkQmOOfHg372QTt3gCfehn6afkcW1+lUbfSXi+wS39T
> ft8AoJIof7r8nTAoAU9SIDxAEVkhxDgP
> =xoEq
> -----END PGP SIGNATURE-----
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to