Hi,
context/environment: C#, VS 2008, Windows 7 64 bit
update: j64-701\bin\j.dll is now working as expected. I'm not going to try
and dig out older beta versions... was it always working? Was it referenced
properly? Was it because I pointed to the file (j.exe / j.dll) in C#, rather
locate the COM entry? Some of it seemed to be my machine (e.g. 601-64 j.dll
suddenly broke) . I'm not sure now after all the testing. If the j7 dll was
always working, perhaps John's manual registry delete /
reregister suggestion was the thing that got me going. Thanks to everyone
who helped me to work this one out.
@eric: if you'd like me to test some more, let me know.
actions (for me):
* use 601 32 bit j.dll for the interim
* move to 701 64 bit j.dll after testing my j verbs and scripts on 701
* start slowly experimenting with sockets & mapped files
thanks,
-Steven
... what follows are my findings prior to finding a solution... I'm going
to leave it there just in case the symptoms pop up for someone else. At
least there'll be a starting point to help them out.
---
update: 32 bit J works fine here under Win 7-64/C#-32/J601-32. I'll run
the j64 test on another Windows 7 64 machine later in the week when it
becomes available if this is of interest.
@eric: did you mention that j.exe uses mapped files to communicate? Perhaps
it's as simple as J.dll sends data as a 64 bit integer to j.exe, and then
j.exe passes it on. The results I was seeing (number, zero, number,
zero, ..., etc). This result matches intel little endian intel architecture
btw: I haven't switched back to using 64 bit C# yet... if you'd like to
throw something my way, I'm happy to test it for you.
---
What follows is the email I was going to send before I decided to complete
the j602-32 bit test first.
I carefully went through David's steps just to make sure I wasn't glossing
over anything. I hadn't previously thought to delete everything out of the
registry manually (which I did). I then again manually re-registered:
* regsvr32.exe j.dll
* j.exe /regserver
note: I'm using C#/.net on VS 2008 with j602-64/j7-64. I don't have Excel
on this PC, but the steps are just about the same (i.e. reference the
library, use the library, etc).
Unfortuanately I still get the same errors of:
64 bit
j.dll
Retrieving the COM class factory for component with CLSID
{21EB05EA-1AB3-11CF-A2AC-8FF70874C460} failed due to the following error:
80040154.
j.exe
m_j.Do("test=:50-i.100")
object test;
m_j.GetB("test", out test);
{50 0 49 0 48 0 47 0 46 0 45 0 ... 2 0 1 0}
... same result when using Get("test", out test);
Note: my earlier report that the return is garbled seems to be incorrect.
Instead output is just always spaced with zeros.
... update 32 bit J works fine here under .net ...
32 bit
j.dll
object test; m_j.Do("test=:50-i.100"); m_j.GetB("test", out test);
correctly returns: {50 49 48 ... -49}
j.exe
works correctly
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm