On Tue, Jun 25, 2013 at 4:22 AM, Luís Oliveira <loliveira@common-lisp.net> wrote:
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>.)
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