# HG changeset patch # User Claus Gittinger # Date 1334509101 -7200 # Node ID 3df000b777125fc9c9db52bf9e741ad6519df501 # Parent 93c008b8e304b6043df0d623165548d9e3444b02 class definition added: #dllMapping changed: #linkToModule #loadLibrary: diff -r 93c008b8e304 -r 3df000b77712 ExternalLibraryFunction.st --- a/ExternalLibraryFunction.st Sat Apr 14 20:01:08 2012 +0200 +++ b/ExternalLibraryFunction.st Sun Apr 15 18:58:21 2012 +0200 @@ -16,7 +16,7 @@ classVariableNames:'DLLPATH FLAG_VIRTUAL FLAG_NONVIRTUAL FLAG_ASYNC FLAG_UNLIMITEDSTACK FLAG_RETVAL_IS_CONST CALLTYPE_MASK CALLTYPE_API CALLTYPE_C CALLTYPE_OLE CALLTYPE_V8 CALLTYPE_V9 - CALLTYPE_UNIX64' + CALLTYPE_UNIX64 DllMapping' poolDictionaries:'' category:'System-Support' ! @@ -184,6 +184,24 @@ ] ! +dllMapping + "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 + dllMapping at:'sqlite3' + put: 'C:\Program Files\Mozilla Firefox\mozsqlite3.dll' + " + + DllMapping isNil ifTrue:[ + DllMapping := Dictionary new. + ]. + ^ DllMapping + + "Created: / 10-04-2012 / 12:21:45 / cg" +! + dllPath ^ DLLPATH ! @@ -600,7 +618,7 @@ moduleHandle isNil ifTrue:[ handle := self loadLibrary:moduleNameUsed. handle isNil ifTrue:[ - self error:('Cannot load module: "%1"' bindWith: moduleNameUsed). + self error:('Cannot load dll/module: "%1"' bindWith: moduleNameUsed). ]. moduleHandle := handle. ]. @@ -616,14 +634,18 @@ ]. ]. - "Modified: / 01-08-2006 / 16:24:14 / cg" - "Modified (comment): / 07-10-2011 / 16:43:11 / cg" + "Modified: / 10-04-2012 / 12:12:44 / cg" ! loadLibrary:dllName |handle nameString filename| - filename := dllName asFilename. + filename := dllName. + DllMapping notNil ifTrue:[ + filename := DllMapping at:filename ifAbsent:[ filename ] + ]. + + filename := filename asFilename. nameString := filename name. "try to load, maybe the system knows where to find the dll" @@ -653,6 +675,8 @@ ]. ^ nil + + "Modified: / 10-04-2012 / 12:21:06 / cg" ! prepareInvoke @@ -1604,7 +1628,7 @@ !ExternalLibraryFunction class methodsFor:'documentation'! version_CVS - ^ '$Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.85 2012-03-01 15:22:21 mb Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/ExternalLibraryFunction.st,v 1.86 2012-04-15 16:58:21 cg Exp $' ! version_SVN