On Tue, Jun 25, 2013 at 4:22 AM, Luís Oliveira loliveira@common-lisp.netwrote:
Hello Mirko,
On Tue, Jun 25, 2013 at 1:56 AM, Mirko Vukovic mirko.vukovic@gmail.com wrote:
I am trying to link to a VISA library (VISA is used to control data acquisition instruments), visa32.lib compiled for Windows. The library
is
shipped with Tektronix software.
I'm surprised loading it works. That sounds like a static library.
You were correct. It did not. I found a dynamically loaded library (dll), and successfully linking to it.
Using `nm' I did find: 00000000 I __imp__viOpenDefaultRM@4 00000000 T _viOpenDefaultRM@4
This looks like the stdcall calling convention. (See "Name-decoration convention" in < http://msdn.microsoft.com/en-us/library/zxk0tw93(v=vs.71).aspx%3E.) Passing ":convention :stdcall" to DEFCFUN should work.
Now that I linked to the correct library, defcfun works: I already managed to crash clisp a few times due to access violation errors. Now I'm off to learn about passing pointer arguments
Cheers,
-- Luís Oliveira http://kerno.org/~luis/
If anything worth sharing comes out of this effort, I may put it out into the world.
Mirko