Using
external functions
External functions are functions that are written in languages other
than PowerScript and stored in dynamic libraries. External functions are
stored in dynamic link libraries (DLLs).
You can use external functions written in any language that supports
the standard calling sequence for 32-bit platforms.
If you are calling functions in libraries that you have written
yourself, remember that you need to export the functions. Depending on
your compiler, you can do this in the function prototype or in a linker
definition (DEF) file.
Use _stdcall convention
C and C++ compilers typically support several calling conventions,
including _cdecl (the default calling convention for C programs),
_stdcall (the standard convention for Windows API calls), _fastcall, and
thiscall. PowerBuilder, like many other Windows development tools,
requires external functions to be exported using the WINAPI (_stdcall)
format. Attempting to use a different calling convention can cause an
application crash.
When you create your own C or C++ DLLs containing functions to be
used in PowerBuilder, make sure that they use the standard convention for
Windows API calls. For example, if you are using a DEF file to export
function definitions, you can declare the function like this:
|
1 2 3 4 |
LONG WINAPI myFunc() { ... }; |
Using PBNI
You can also call external functions in PowerBuilder extensions.
PowerBuilder extensions are built using the PowerBuilder Native
Interface (PBNI). For more information about building PowerBuilder
extensions, see the PowerBuilder Native Interface Programmers Guide and
Reference. For more information about using PowerBuilder extensions, see
PowerBuilder Extension Reference.