Writing your C DLL code

To build a simple C DLL, write code using the #pragma export directive to export specific external functions and variables as shown in Figure 1.

Figure 1. Using #pragma export to create a DLL executable module named BASICIO
   #pragma export(bopen)
   #pragma export(bclose)
   #pragma export(bread)
   #pragma export(bwrite)
   int bopen(const char* file, const char* mode) {
     ...
   }
   int bclose(int) {
     ...
   }
   int bread(int bytes) {
     ...
   }
   int bwrite(int bytes) {
     ...
   }
   #pragma export(berror)
   int berror;
   char buffer[1024];
     ...
   

For the previous example, the functions bopen(), bclose(), bread(), and bwrite() are exported; the variable berror is exported; and the variable buffer is not exported.

Note: To export all defined functions and variables with external linkage in the compilation unit to the users of the DLL, compile with the EXPORTALL compile option. All defined functions and variables with external linkage will be accessible from this DLL and by all users of this DLL. However, exporting all functions and variables has a performance penalty, especially when compiling with the C/C++ IPA option. When you use EXPORTALL you do not need to include #pragma export in your code.