That part is where the programmer comes in. If for example you have written a cross platform gui lib using the native gui api of each os. You would have to include versions of your code that will work with each. To the user of the module it would be transparent. They could compile on all three platforms, and get very similar results. A button would be a button., a window a window. But for the module maker it would be 3 times the work, they would have to include for each api reference, 3 versions. One for each host os.
( taken from http://www.blitzbasic.com/Community/posts.php?topic=41266 )
?MacOS Import "-framework AGL" Import "-framework OpenGL" ?Win32 Import "-lglu32" Import "-lopengl32" ?Linux Import "-lGL" Import "-lGLU" ?
( taken from http://www.blitzbasic.com/Community/posts.php?topic=41266 )