(cherry picked from commit 036c52f0b6)
This commit is contained in:
cooldome
2018-10-09 14:19:21 +01:00
committed by narimiran
parent 2923eb08ab
commit 221c67b880
3 changed files with 32 additions and 1 deletions

View File

@@ -567,7 +567,12 @@ proc loadDynamicLib(m: BModule, lib: PLib) =
var p = newProc(nil, m)
p.options = p.options - {optStackTrace, optEndb}
var dest: TLoc
initLocExpr(p, lib.path, dest)
initLoc(dest, locTemp, lib.path, OnStack)
dest.r = getTempName(m)
appcg(m, m.s[cfsDynLibInit],"$1 $2;$n",
[getTypeDesc(m, lib.path.typ), rdLoc(dest)])
expr(p, lib.path, dest)
add(m.s[cfsVars], p.s(cpsLocals))
add(m.s[cfsDynLibInit], p.s(cpsInit))
add(m.s[cfsDynLibInit], p.s(cpsStmts))

10
tests/cpp/amodule.nim Normal file
View File

@@ -0,0 +1,10 @@
import os
proc findlib: string =
let path = getEnv("MYLIB_DOES_NOT_EXIST_PATH")
if path.len > 0 and dirExists(path):
path / "alib_does_not_matter.dll"
else:
"alib_does_not_matter.dll"
proc imported_func*(a: cint): cstring {.importc, dynlib: findlib().}

View File

@@ -5,3 +5,19 @@ discard """
proc foo(): cstring {.importcpp: "", dynlib: "".}
echo foo()
## bug #9222
import os
import amodule
proc findlib2: string =
let path = getEnv("MYLIB2_DOES_NOT_EXIST_PATH")
if path.len > 0 and dirExists(path):
path / "alib_does_not_matter.dll"
else:
"alib_does_not_matter.dll"
proc imported_func2*(a: cint): cstring {.importc, dynlib: findlib2().}
echo imported_func(1)
echo imported_func2(1)