View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Chip Pearson Chip Pearson is offline
external usenet poster
 
Posts: 7,247
Default calling a shared lib from VBA in Excel

Ian,

The C DLL function must have been compiled with the "__stdcall" modifier,
and the function must have been exported with a DEF file. Also, since the
SetBootstraps function requires a value of nBootstraps, not a pointer, you
need the ByVal modifier in your Declare statement.

Declare Function SetBootstraps lib "mylib" (ByVal nBootstraps As Long) As
Boolean


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
(email address is on the web site)






"Ian Kennedy" wrote in message
...
Hi I'm attempting to call a function in a shared library from a VBA macro
in excel. This is a typical c function:

extern "C" bool SetBootstraps(int nBootstraps)

In VBA I have it declared as:

declare function SetBootstraps lib "mylib" (nBootstraps as long) as
Boolean

When I attempt to run this via the c debugger I don't get the value passed
down to excel that I would expect. What do I have to do to pass variables
down correctly. Do I need to use CDecl in the VBA or do I need to use
pascal in the C. Which is correct.

Also am I correct in thinking that the following is correct

VBA C
Integer short
Long int
Double double
Boolean bool

Thanks
Ian