Hi Joe, Dependency Walker is complaining that SQLite.Interop.dll needs but cannot find IEShims.dll. This DLL is present on my system twice, in the program files directory of both x86 and x64 versions of Internet Explorer, respectively.
In the case of x86 it indicates this problem with missing IEShims.dll with the following additional information: Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module. Error: Modules with different CPU types were found. Warning: At least one delay-load dependency module was not found. Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module. In the case of x64 it indicates the same with the following additional information: Warning: At least one delay-load dependency module was not found. Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module. This still does not begin explain why it works for one of my solutions and not for the other, all other things being equal. There are actually three projects -- a Shared project, whence the shared projects come, the solution that works, and the one that doesn't. The one that does is a WPF app with the shared projects and some projects specific to its needs, and the other is a WCF app with the shared projects and some of its own. I have used NuGet to install SQLite into all three. I'm going to remove it from the projects in the WPF and WCF solutions, leaving it only in the Shared solution, and resolving all references to the SQLite binaries in the shared solution, for starters. - Bob On Mon, Oct 8, 2012 at 8:16 PM, Joe Mistachkin <sql...@mistachkin.com>wrote: > > Robert Calco wrote: > > > > They are all running .NET 4.5, C# 2012, Debug, AnyCPU mode, and the unit > > tests look identically configured, both on the hard drive and logically > in > > their respective solution trees. I used NuGet to install SQLite in both > > solutions, so they each have their own copy in their respective /packages > > directory. > > > > Are these running on the same machine? Is the operating system 32-bit or > 64-bit? One thing to note is that AnyCPU is basically the same as Win32 > (x86) in the System.Data.SQLite solution files. I'm not sure how your > solution files are configured. > > > > > So, to the naked eye, they seem identical. However, one solutions' unit > > tests run absolutely fine, and the other one throws the error in the > > subject of this email. Both are pulling in the common data layer project > > which is the one that depends on SQLite. both have the following in the > > Debug\bin directory: > > > > x64\ (folder with 64 bit version of SQLite.Interop.dll in it) > > x86\ (folder with 32 bit version of SQLite.Interop.dll in it) > > > > ... rest of the binaries required > > > > Ok, the native library pre-loading feature should be in use then. > > > > > I tried configuring all projects in the problem solution to Debug, x86, > > and I even tried dropping the 32-bit version of the SQLite.Interop.dll > > into the bin directory of the unit tests... and STILL I get this error. > > > > Is the operating system 32-bit? If not, you might want to try building > everything for x64. > > > > > I saw on post, a couple of google searches ago, that indicated perhaps > the > > version of the MS runtime DLLs might be the issue. Is it possible that > one > > of my projects has a "newer" version of System.Data.SQLite that was > > compiled against a "newer" version of the MS C++ runtime dlls, even > though > > they have the same version (1.0.82.0)? (I have not upgraded to the latest > > MS C++ runtime DLLs in my 2012 project, for all kinds of reasons that > have > > to do with some of our own C/C++ dependencies in native sub-projects.) > > > > If you are using the official NuGet package, the contained DLLs are all > compiled with the latest version of the corresponding Microsoft Visual C++ > runtime libraries for the appropriate processor architecture. > > > > > How should I troubleshoot this? > > > > 1. Verify if the operating system is 32-bit or 64-bit. > > 2. Verify if the application EXE is marked as 32-bit or 64-bit in the > header > using CorFlags and/or ILDasm. > > 3. Run the "depends.exe" tool on the SQLite.Interop.dll and make sure it > does > not find any errors related to missing Visual C++ Runtime DLLs. > > > > > And in general how does SQLite work in "AnyCPU" mode if it needs > > SQLite.Interop.dll to run, and there are precisely two mutually exclusive > > versions of it -- 32 and 64 bit? > > > > The "AnyCPU" build platform really only applies to managed projects. For > native projects in the System.Data.SQLite solution files, it simply maps to > Win32 (x86). > > -- > Joe Mistachkin > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > -- *Bob Calco* 25325 Geddy Rd. Land O'Lakes, FL 34639 bobca...@gmail.com 813-406-5019 (landline) 813-520-2891 (mobile) _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users