Procházet zdrojové kódy

Add 64 bit Windows sqlite3.dll and use this if running a 64-bit windows process.

Justin Clark-Casey (justincc) před 12 roky
rodič
revize
68a4ef5ef6

+ 3 - 0
OpenSim/Data/SQLite/SQLiteAssetData.cs

@@ -81,6 +81,9 @@ namespace OpenSim.Data.SQLite
         /// <param name="dbconnect">connect string</param>
         override public void Initialise(string dbconnect)
         {
+            if (Util.IsWindows())
+                Util.LoadArchSpecificWindowsDll("sqlite3.dll");
+
             if (dbconnect == string.Empty)
             {
                 dbconnect = "URI=file:Asset.db,version=3";

+ 3 - 0
OpenSim/Data/SQLite/SQLiteAuthenticationData.cs

@@ -65,6 +65,9 @@ namespace OpenSim.Data.SQLite
 
             if (!m_initialized)
             {
+                if (Util.IsWindows())
+                    Util.LoadArchSpecificWindowsDll("sqlite3.dll");
+
                 m_Connection = new SqliteConnection(connectionString);
                 m_Connection.Open();
 

+ 3 - 0
OpenSim/Data/SQLite/SQLiteEstateData.cs

@@ -69,6 +69,9 @@ namespace OpenSim.Data.SQLite
 
         public void Initialise(string connectionString)
         {
+            if (Util.IsWindows())
+                Util.LoadArchSpecificWindowsDll("sqlite3.dll");
+
             m_connectionString = connectionString;
 
             m_log.Info("[ESTATE DB]: Sqlite - connecting: "+m_connectionString);

+ 2 - 0
OpenSim/Data/SQLite/SQLiteFramework.cs

@@ -48,6 +48,8 @@ namespace OpenSim.Data.SQLite
 
         protected SQLiteFramework(string connectionString)
         {
+            if (Util.IsWindows())
+                Util.LoadArchSpecificWindowsDll("sqlite3.dll");
         }
 
         //////////////////////////////////////////////////////////////

+ 3 - 0
OpenSim/Data/SQLite/SQLiteInventoryStore.cs

@@ -77,6 +77,9 @@ namespace OpenSim.Data.SQLite
             {
                 m_Initialized = true;
 
+                if (Util.IsWindows())
+                    Util.LoadArchSpecificWindowsDll("sqlite3.dll");
+
                 if (dbconnect == string.Empty)
                 {
                     dbconnect = "URI=file:inventoryStore.db,version=3";

+ 3 - 0
OpenSim/Data/SQLite/SQLiteSimulationData.cs

@@ -110,6 +110,9 @@ namespace OpenSim.Data.SQLite
         {
             try
             {
+                if (Util.IsWindows())
+                    Util.LoadArchSpecificWindowsDll("sqlite3.dll");
+
                 m_connectionString = connectionString;
 
                 ds = new DataSet("Region");

+ 3 - 0
OpenSim/Data/SQLite/SQLiteXInventoryData.cs

@@ -52,6 +52,9 @@ namespace OpenSim.Data.SQLite
 
         public SQLiteXInventoryData(string conn, string realm)
         {
+            if (Util.IsWindows())
+                Util.LoadArchSpecificWindowsDll("sqlite3.dll");
+
             m_Folders = new SQLiteGenericTableHandler<XInventoryFolder>(
                     conn, "inventoryfolders", "XInventoryStore");
             m_Items = new SqliteItemHandler(

+ 30 - 0
OpenSim/Framework/Util.cs

@@ -392,6 +392,36 @@ namespace OpenSim.Framework
                 || platformId == PlatformID.WinCE);
         }
 
+        public static bool LoadArchSpecificWindowsDll(string libraryName)
+        {
+            // We do this so that OpenSimulator on Windows loads the correct native library depending on whether
+            // it's running as a 32-bit process or a 64-bit one.  By invoking LoadLibary here, later DLLImports
+            // will find it already loaded later on.
+            //
+            // This isn't necessary for other platforms (e.g. Mac OSX and Linux) since the DLL used can be
+            // controlled in config files.
+            string nativeLibraryPath;
+
+            if (Util.Is64BitProcess())
+                nativeLibraryPath = "lib64/" + libraryName;
+            else
+                nativeLibraryPath = "lib32/" + libraryName;
+
+            m_log.DebugFormat("[UTIL]: Loading native Windows library at {0}", nativeLibraryPath);
+
+            if (Util.LoadLibrary(nativeLibraryPath) == IntPtr.Zero)
+            {
+                m_log.ErrorFormat(
+                    "[UTIL]: Couldn't find native Windows library at {0}", nativeLibraryPath);
+
+                return false;
+            }
+            else
+            {
+                return true;
+            }
+        }
+
         public static bool IsEnvironmentSupported(ref string reason)
         {
             // Must have .NET 2.0 (Generics / libsl)

+ 1 - 14
OpenSim/Region/Physics/OdePlugin/OdePlugin.cs

@@ -66,20 +66,7 @@ namespace OpenSim.Region.Physics.OdePlugin
                 // This isn't necessary for other platforms (e.g. Mac OSX and Linux) since the DLL used can be
                 // controlled in Ode.NET.dll.config
                 if (Util.IsWindows())
-                {
-                    string nativeLibraryPath;
-
-                    if (Util.Is64BitProcess())
-                        nativeLibraryPath = "lib64/ode.dll";
-                    else
-                        nativeLibraryPath = "lib32/ode.dll";
-
-                    m_log.DebugFormat("[ODE PLUGIN]: Loading native Windows ODE library at {0}", nativeLibraryPath);
-
-                    if (Util.LoadLibrary(nativeLibraryPath) == IntPtr.Zero)
-                        m_log.ErrorFormat(
-                            "[ODE PLUGIN]: Couldn't find native Windows ODE library at {0}", nativeLibraryPath);
-                }
+                    Util.LoadArchSpecificWindowsDll("ode.dll");
 
                 // Initializing ODE only when a scene is created allows alternative ODE plugins to co-habit (according to
                 // http://opensimulator.org/mantis/view.php?id=2750).

+ 0 - 0
bin/sqlite3.dll → bin/lib32/sqlite3.dll


binární
bin/lib64/sqlite3.dll