• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r4wp

[#Red] Red language group

Pekr
23-Aug-2012
[1343]
well, do we need those libraries being loadable using R2?
DocKimbel
23-Aug-2012
[1344x3]
That should work, we need at least to know what causes this.
Would be nice if more ppl on Windows could test it, so we maybe get 
a clue why it doesn't load on 
some configs.
Pekr: are you running an admin session on W7? (or a user with admin 
rights)
Pekr
23-Aug-2012
[1347]
I have Vista 32 bit, I am an admin ..
DocKimbel
23-Aug-2012
[1348]
So far, I suppose that the issue is caused by either:
- lack of relocation ability from the DLL (my #1 suspect)

- compatibility issue(s) with some system DLL (msvcrt.dll most probably)
- another unknown reason

I'll try to add relocation data to the DLL tonight.
PeterWood
23-Aug-2012
[1349]
When I ran my successful test, I ran as a user not admin.
sqlab
23-Aug-2012
[1350]
same problem here

>> read %temp.dll

== {MZ€^@^A^@^@^@^D^@^P^@ÿÿ^@^@@^A^@^@^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@€^@^@^@^N
^_º^N...
>> lib:  load/library %temp.dll
** Access Error: Cannot open temp.dll as library
** Near: lib:  load/library %temp.dll
	
but
>> load/library %shell32.dll
>>
Kaj
23-Aug-2012
[1351x2]
What if you explicitly point to the current directory? Is that %.\temp.dll 
on Windows?
Or try the full path to the DLL
sqlab
23-Aug-2012
[1353]
i tried with full path too. same result
Kaj
23-Aug-2012
[1354]
OK, it fixes some cases with R3 extension loading
Pekr
23-Aug-2012
[1355]
it is imo not definitely a path problem. Just check with exists? 
%temp.dll, and it returns true. Still library is not loading ...
Endo
24-Aug-2012
[1356x2]
I suspect about the different msvcrt.dll versions.

AdrianS: "did REBOL core only have library support if you had a licensed 
sdk?" - yes licensed Core (Core/Pro) support library.
I just tried on Win7 64bit, it works.
Rebolek
24-Aug-2012
[1358]
msvcrt.dll - version 7.0.2600.5701
DocKimbel
24-Aug-2012
[1359x2]
I tried also on my W7 x64 instance on laptop, it works.
msvcrt.dll - v7.0.7600.16930
kernel32.dll - v6.1.7600.16850
Pekr
24-Aug-2012
[1361x2]
mine is: 7.0.6002.18551 (vistasp2_gdr.111214-0301)
kernel32: 6.0.6001.18000 (longhorn_rtm.080118-1840)
PeterWood
24-Aug-2012
[1363]
msvcrt.dll - 7.0.7601.21878
kernel32.dll - 6.1.7601.17651
MagnussonC
24-Aug-2012
[1364]
Win 7 x64
msvcrt.dll 7.0.7601.17744
kernel32.dll 6.1.7601.17651
DocKimbel
24-Aug-2012
[1365x3]
So for ppl where it loads, we have msvcrt rev >= 7600, for ppl where 
it doesn't load, we have rev 2600 and 6002 (Vista). 

Rebolek, are you running on a pre-RTM version of W7?
Anyway, it should load even on XP, so I really suspect a relocation 
need for boxes with older msvcrt.
I have changed 'on-load definition in last commit:


You can now _optionally_ defined 4 callbacks when producing a DLL:

 on-load:        func [hModule [integer!][...]
 on-unload:      func [hModule [integer!][...]
 on-new-thread:  func [hModule [integer!][...]
 on-exit-thread: func [hModule [integer!][...]

 hModule is a handler on the DLL instance.

They don't need to be added to #export block.
sqlab
24-Aug-2012
[1368]
I tried to put a msvcrt.dll > 7600 into the same path as temp.dll, 
into system32 or into the rebol home path. still no success
Pekr
24-Aug-2012
[1369]
Doc - the SW you suggest for Git is extremly nice, almost like working 
with tablet, but otherwise not much usefull to me. It does not add 
context menu to the shell, so no right click upon the directory. 
I also did not figured out, how should I add red in there? There 
is no place to paste the https://github.com/dockimbel/Red.gitURL 
... I will install back some other git client ...
Henrik
24-Aug-2012
[1370]
I try to keep with the console Git to practice it properly, but it 
may not be easy under Windows. I don't know.
Endo
24-Aug-2012
[1371]
My msvcrt.dll version is 7.0.2600.5512 (on XP/Pro Turkish). and it 
works.
Rebolek
24-Aug-2012
[1372]
The 2600 version was on virtual XP, on W7 I've got 7.0.7601.17744
Endo
24-Aug-2012
[1373]
I just tested on a XP/Pro on VirtualBox, msvcrt.dll version is 7.0.2600.2180, 
it works.
sqlab
24-Aug-2012
[1374]
Works on W7/64/Pro, but not on XP/Pro
AdrianS
24-Aug-2012
[1375]
Petr - for a git GUI you might want to try SmartGit - free for non 
commercial use and, IMO, the best GUI. Also, it's available for all 
platforms. I use this, tortoise and the command-line, depending on 
the context
DocKimbel
24-Aug-2012
[1376]
Pekr: it's easier than you think: just open https://github.com/dockimbel/Red
and click on the "Clone in Windows" button ;)
Pekr
24-Aug-2012
[1377x2]
Well, I am ok with tortoise, I just somehow can't easily swith the 
branches, it can't see them ... one option can see dyn-lib, other 
is still seeing a float branch, etc ...
Will try that. I though I will have to do something on the github 
page. I thought it is "watch" which is needed, but it was not it. 
Clone in windows - what a name ;-)
DocKimbel
24-Aug-2012
[1379x2]
ToirtoiseGit context menu->Switch/Checkout, then choose your branch 
(can be local branch or remote/origin/* or remote/dockimbel/* not 
sure) or add new ones with "..." button on the right side->click 
on remotes->click on origin->select your branch.
So it's not a msvcrt issue it seems.
Kaj
24-Aug-2012
[1381x4]
With the latest series of fixes, I've finally been able to move the 
SQLite binding into a CONTEXT
This has led to a huge shift in the naming of words. If you had written 
anything on this binding, you need to update your programs
Also, because it needs the latest non-released Red/System, I have 
put the binding changes in a separate developing branch:
http://red.esperconsultancy.nl/Red-SQLite
DocKimbel
24-Aug-2012
[1385]
Pekr and Rebolek: could you try to use ProcessMonitor (PM) to see 
if we can get a clue about what is blocking the DLL loading from 
R2?


1) Download it from: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
2) Run it

3) Open a REBOL console and CD to the folder where the DLL is located

4) In PM, drag'n drop the "target" icon to the REBOL console window
5) Type in console: lib: load/library %temp.dll

6) Scroll down in the PM window to look for rebol.exe process entries, 
look for failure reports in Result and Detail columns...
Pekr
24-Aug-2012
[1386]
I know sysinternals tools for quite some time. Just checked, no failure 
reports ....
DocKimbel
25-Aug-2012
[1387x2]
Pekr & Rebolek: can you give it a new try with latest commit (it 
adds relocation support to DLLs).
If it still doesn't work, we'll have to get your hands dirty by diving 
in Windows guts using WinDbg. ;-)
Pekr
25-Aug-2012
[1389x2]
ok, going to test it ....
what is now latest temp.reds source? I got:

Compiling tests/temp.reds ...
Script: "Red/System IA-32 code emitter" (none)
*** Compilation Error: missing argument
*** in file: %runtime/win32.reds
*** in function: ***-dll-entry-point
*** at line: 204
*** near: [hinstDLL]
DocKimbel
25-Aug-2012
[1391x2]
hmm...let me see...
Red/System []

on-load: func [a [integer!]][
	print-line "on-load executed"
]

on-unload: func [a [integer!]][
	print-line "on-unload executed"
]

i: 56
foo: func [a [integer!] return: [integer!]][a + 1]

#export [foo i]