Hi.
I have an application with code compiled in a dll file. I call commands in the dll using a lisp file which calls a macro which calls the command in the dll.
This all works fine with Windows XP but not on vista. The macro can't seem to call the dll.
The dll file is registerd and I can find it in the registry editor. Can anyone suggest why it's not working with Vista?
Command Line:
Command: tcat
_-vbarun
Macro name: DLLTCAT Execution error
Command: nil
Lisp:
(defun C:TCAT ()
(command "_-vbarun" "DLLTCAT")
)
Macro:
Sub DLLTCAT()
Set Mydll = ThisDrawing.Application.GetInterfaceObject("Profile.Main")
Mydll .DLLTCAT
End Sub
Solved! Go to Solution.
Solved by Alfred.NESWADBA. Go to Solution.
Hi,
are you running Vista in 64bit-mode ... and you DLL previously was designed for/compiled to 32bit?
- alfred -
Hi Alfred,
Thankyou..that explains things. It looks like I need to convert my app from VB6 to .net.
Is it possible to get the 32 bit version working on the 64 bit machines until I can make the conversion? Do I need to use XP mode?
Hi,
>> Is it possible to get the 32 bit version working on the 64 bit machines
If there exists an 64bit-version of your type of AutoCAD you won't get the 32bit-version running on 64bit-OS.
E.g. for Civil3D (vertical product based on AutoCAD) there was a release 2010 that didn't support 64bit ==> that version is installable in 64bit OS and runs in 32bit-mode. But only because there is no 64bit-version of Civil3D2010.
Sorry, - alfred -
At least I know the problem. I've already done a fair amount of the conversion so it looks like I need to get back to finishing it off.
Thanks again!!
Alfred,
I've just been told that the computer is actually 32 Bit Vista.
Is there anything I can do to get the program running.
I tried setting the compatibility of acad.exe to XP mode. It didn't seem to help.
Hi,
ok, in that case I would start with a small EXE and try to add your DLL (that would propably be an ActiveX-DLL) to the references. If that works you got obstacle one.
Next in your sample-EXE try to GetObject to your ActiveX-object ==> does that work (obstacle two) you can then try to call a sub or a function within your DLL.
If all the above job's are working then you have proofed that your computer can handle the ActiveX-DLL. Now the next step is to play with the AutoCAD-environment. Either you have AutoCAD-based references in your DLL that may not be compatible to the AutoCAD-version you are running or there is something with your LISP-to-VBA-to-DLL aproach. You would be able to do the ActiveX-access directly in LISP, you don't need VBA for that. Check for vlax-get-object.
Or (just the next idea) you have not installed the VBA-runtime?
HTH, - alfred -
I didn't know how to test by creating an .exe so I tried the lisp to dll direct route.
(defun C:TCAT ()
(setq Test (vlax-create-object "mydll.Main"))
(setq answer(vlax-invoke-method Test 'DLLTCAT))
)
That doesn't seem to work. And I did have the VBA-runtime installed.
Looks like I need to change it to .net.
Thanks again for your help here!