Massa, Harald Armin wrote:
> Ambarsih,
>
>> // add.cpp : Defines the entry point for the DLL application.
>
> are you sure that you using the C-Compiler and not the c++ compiler?
> As much as I know about defaults, that will be a C++ compiled
> function, which is something totally different then a C compiled
> function. (and, to my knowledge, a C++ function is not easily callable
> by PostgreSQL)
So long as the function uses C linkage (extern "C") it'll be callable
directly from C++ using dlopen(), LoadLibrary, etc.
A C++ function is callable from C via function pointer even if it has
C++ linkage, though the C calling convention declared must handle stack
management, parameter passing and return value popping in the same way
the C++ calling convention on that compiler does. That means that it's
unsafe to call a __thiscall C++ member function from C, but otherwise
it's generally fine so long as the C and C++ compilers default to the
same calling convention or you explicitly specify it on both ends.
--
Craig Ringer