quando crei una libreria statica o dinamica in unix non devi dare specificazioni alle funzioni che vuoi esportare o importare, queste vengono esportate o importate naturalmente. L'unica cosa che bisogna fare e dire al compilatore e al linker che si desidera creare una libreria, statica o dinamica, o un eseguibile (in questo caso naturalmente occorrerà che ci sia la funzione main).Cosa vuol dire?
In windows invece bisogna esplicitare le funzioni che si vogliono importare o esportare e questo si fa con i modificatori __declspec( dllexport ) e __declspec( dllimport ).
Siccome di norma il file include è uno solo si utilizza una direttiva del preprocessore per inserire nel contesto il giusto comando.
Una tua funzione da importare/esportare potrebbe essere definita come
MYMATH_EXPORT int mia_somma_strana (int a, int b){
return (a - b);
}
e MYMATH_EXPORT nel caso di windows risulterà __declspec( dllexport ) e nel caso di unix non comparirà del tutto.
Hai quindi creato codice multipiattaforma.
ciao
sergio