Oracle Consulting Oracle Training Oracle Support Development
Oracle Books
SQL Server Books
IT Books
Job Interview Books
Rampant Horse Books
911 Series
Pedagogue Books

Oracle Software
Write for Rampant
Publish with Rampant
Rampant News
Rampant Authors
Rampant Staff
Oracle News
Oracle Forum
Oracle Tips
Articles by our Authors
Press Releases
SQL Server Books

Oracle 11g Books

Oracle tuning

Oracle training

Oracle support

Remote Oracle


Privacy Policy


  SQL Server Tips by Burleson

Exporting the function

To hide all of the details required to export the XP function from the DLL, quite a lot of things need to be correct. In C++, you need to ensure that your function uses ‘extern "C"’ to avoid name mangling. You also need to use the Microsoft Visual C++ extension ‘__declspec(dllexport)’ to export the function or if this is not available, then falling back to using a DEF file. To hide all of these details, a pre-processor macro ‘IMPLEMENT_XP’ is provided. For example, if your XP takes the following form in SDK style code:

extern "C" SRVRETCODE __declspec(dllexport) XP_SAVEFILE(SRV_PROC *srvproc)
-------YOUR XP CODE-----

Then this would map to the following using the XP++ framework:


XP_SAVEFILE will be the name of the exported function and CSaveFileStoredProcedure will be the class you develop which is derived from CExtendedStoredProcedure (described later).

Support for __GetXpVersion

Support for this function is provided through the pre-processor macro ‘IMPLEMENT_VERSION_XP()’. This simply adds the standard boilerplate code for the __GetXpVersion function to your project. IMPLEMENT_VERSION_XP is implemented as:

extern "C" __declspec(dllexport) ULONG __GetXpVersion() \
{ \
return ODS_VERSION; \

The above book excerpt is from:

Super SQL Server Systems
Turbocharge Database Performance with C++ External Procedures

ISBN: 0-9761573-2-2
Joseph Gama, P. J. Naughter  

Linux Oracle commands syntax poster

ION Oracle tuning software

Oracle data dictionary reference poster

Oracle Forum

BC Oracle consulting support training

BC remote Oracle DBA   



 Copyright © 1996 -2017 by Burleson. All rights reserved.

Oracle® is the registered trademark of Oracle Corporation. SQL Server® is the registered trademark of Microsoft Corporation. 
Many of the designations used by computer vendors to distinguish their products are claimed as Trademarks

Hit Counter