#FEATURE by cg
authorClaus Gittinger <cg@exept.de>
Tue, 23 Aug 2016 19:43:02 +0200
changeset 20299 7db2dc640f2f
parent 20298 98dc8dbdd8cf
child 20300 b67a6d272129
#FEATURE by cg class: ExternalLibraryFunction added: #dllMappingAt:put:
ExternalLibraryFunction.st
--- a/ExternalLibraryFunction.st	Tue Aug 23 12:14:04 2016 +0200
+++ b/ExternalLibraryFunction.st	Tue Aug 23 19:43:02 2016 +0200
@@ -15,11 +15,11 @@
 
 ExternalFunction subclass:#ExternalLibraryFunction
 	instanceVariableNames:'flags moduleName returnType argumentTypes owningClass'
-	classVariableNames:'DLLPATH FLAG_VIRTUAL FLAG_NONVIRTUAL FLAG_OBJECTIVEC FLAG_ASYNC
-		FLAG_UNLIMITEDSTACK FLAG_RETVAL_IS_CONST CALLTYPE_MASK
-		CALLTYPE_API CALLTYPE_C CALLTYPE_OLE CALLTYPE_V8 CALLTYPE_V9
-		CALLTYPE_UNIX64 DllMapping Verbose LastModuleHandleHolder
-		LastModuleHandleName'
+	classVariableNames:'CALLTYPE_API CALLTYPE_C CALLTYPE_MASK CALLTYPE_OLE
+		CALLTYPE_UNIX64 CALLTYPE_V8 CALLTYPE_V9 DLLPATH DllMapping
+		FLAG_ASYNC FLAG_NONVIRTUAL FLAG_OBJECTIVEC FLAG_RETVAL_IS_CONST
+		FLAG_UNLIMITEDSTACK FLAG_VIRTUAL LastModuleHandleHolder
+		LastModuleHandleName Verbose'
 	poolDictionaries:''
 	category:'System-Support'
 !
@@ -295,6 +295,23 @@
     "Created: / 10-04-2012 / 12:21:45 / cg"
 !
 
+dllMappingAt:baseLibname put:aNameOrPath
+    "allows for dll's to be replaced,
+     for example, if you want to use the mozilla sqlite dll
+        C:\Program Files\Mozilla Firefox\mozsqlite3.dll
+     for the sqlite3, execute:
+        ExternalLibraryFunction
+            dllMappingAt:'sqlite3'
+            put: 'C:\Program Files\Mozilla Firefox\mozsqlite3.dll'
+     for mingw:
+        ExternalLibraryFunction
+            dllMappingAt:'sqlite3'
+            put:'C:\mingw64\opt\bin\libsqlite3-0.dll'
+    "
+
+    self dllMapping at:baseLibname put: aNameOrPath
+!
+
 dllPath
     "provide a default dllPath, where external libraries are searched for"