System.Data.SQLite
View Ticket
Not logged in
Ticket UUID: a1c8119f68b991a808534a5cbc66d133b0a94820
Title: The testce.2008 project fails when targeted to a Windows Mobile 6.1 device
Status: Closed Type: Incident
Severity: Important Priority: Medium
Subsystem: Integration_Via_PInvoke Resolution: Unable_To_Reproduce
Last Modified: 2016-01-14 17:39:37
Version Found In: 1.0.99.0
User Comments:
anonymous added on 2015-12-23 15:54:33:
I'm investigating the possibility of replacing SQL Server Compact with System.Data.SqLite for our legacy .NET Compact applications running on Windows Mobile 6.1 devices.

I attempted using the precompiled binaries provided in sqlite-netFx35-binary-PocketPC-ARM-2008-1.0.99.0.zip and ran into issues.  So I decided to try testing from the source available in sqlite-netFx-source-1.0.99.0.zip and following the "Test Windows CE Binaries Manually" instructions on the Release Procedures page.

When executing the testce.2008 project targeting a Pocket PC 2003 SE emulator everything tests fine.  However when I attempt to do the same using a Windows Mobile 6.1 Professional emulator I experience the same error as when I attempted my own sample project.

System.MissingMethodException was unhandled
  Message="Can't find PInvoke DLL 'SQLite.Interop.099.dll'."
  StackTrace:
       at System.Data.SQLite.SQLite3.StaticIsInitialized()
       at System.Data.SQLite.SQLiteLog.Initialize()
       at System.Data.SQLite.SQLiteConnection..ctor(String connectionString, Boolean parseViaFramework)
       at System.Data.SQLite.SQLiteConnection..ctor(String connectionString)
       at System.Data.SQLite.SQLiteConnection..ctor()
       at test.Program.NewConnection()
       at test.Program.Main(String[] args)
	   
Searching the internet for solutions I found a suggestion of placing the System.Data.SqLite.dll and SqlLite.Interop.099.dll files in the root of the project folder.  In my sample project this appears to work, though I'm at a loss why that would be the case.  It's also problematic since we would expect to use this within our reference projects containing business logic, not directly from the mobile client project.

mistachkin added on 2015-12-23 21:24:15:
Are you running this from inside the Visual Studio 2008 IDE?  If so, which build
configuration are you using?  Are you using the steps from:

    [/doc/trunk/www/release.wiki#testCeBinariesManually]

Also, what issues did you run across using the precompiled DLLs?

anonymous added on 2015-12-28 18:03:27:
> Are you running this from inside the Visual Studio 2008 IDE?  

Yes.

> If so, which build configuration are you using?  Are you using the steps from:
> [/doc/trunk/www/release.wiki#testCeBinariesManually]

I'm following those exact instructions.

I set "testce" as the startup project, I set the platform to "Pocket PC 2003 (ARMV4)", I set the solution configuration to "Debug".

The only difference is that when the deploy dialog appears I'm selecting "Windows Mobile 6 Professional Emulator".  When I select "Pocket PC 2003 SE Emulator" the test runs successfully.

> Also, what issues did you run across using the precompiled DLLs?

The same "Can't find PInvoke DLL 'SQLite.Interop.099.dll'." exception.

I just wanted to see if there was something I was doing wrong, so I attempted to run the test from the source.  When I saw that the same exception was produced, I decided to submit it here.

Thanks for your help.

mistachkin added on 2015-12-29 05:55:19:
Unfortunately, I do not appear to have that emulator available here, so I
cannot attempt to reproduce your issue directly.

However, the issue may simply be with the Visual Studio IDE itself not
deploying the files to the right directory on the target.  Have you tried
manually copying all the necessary files manually to the target deployment
directory, e.g.:

1. "bin\2008\Pocket PC 2003 (ARMV4)\Debug\SQLite.Interop.099.dll"
2. "bin\2008\DebugCompact\bin\System.Data.SQLite.dll"
3. "bin\2008\DebugCompact\bin\testce.exe"
4. "bin\2008\DebugCompact\bin\test.cfg"
5. "bin\2008\DebugCompact\bin\test.sql"

As long as the processor architecture is compatible and all of these files
are in the same directory, I'm not sure why it would not work.