In buona sostanza puoi usare le direttive di compilazione condizionale.
Qualcosa del genere:
lib1.h:
codice:
#ifndef MY_LIB1_H
#define MY_LIB1_H
#if defined _WIN32 || defined __CYGWIN__
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
#else
#if __GNUC__ >= 4
#define MYDLL_API __attribute__ ((visibility ("default")))
#else
#define MYDLL_API
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
MYDLL_API int somma(int x, int y);
#ifdef __cplusplus
}
#endif
#endif /* MY_LIB1_H */
Quello sopra è l'header file di una libreria(dinamyc linking library, .dll, su windows; shared library, .so, su Linux) che esporta la funzione somma.
lib1.c:
codice:
#include <stdio.h>
#include <stdlib.h>
#define MYDLL_EXPORTS
#include "lib1.h"
MYDLL_API int somma(int x, int y)
{
return x + y;
}