On Tue, Mar 26, 2013 at 5:57 AM, Marcos Douglas <span dir="ltr"><<a href="mailto:md@delfire.net" target="_blank">md@delfire.net</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">Hi,</div></div>
Is possible to make that only using Windows for any lib?<br>
<br>
Best regards,<br>
Marcos Douglas</blockquote><div><br></div><div>Marcos,</div><div><br></div><div>Are you asking, "Is it possible to build any static lib for Windows and link it to a free pascal project"?</div><div><br></div><div>
No, not all the time. Libraries may depend on systems function on one platform which are not available on another.</div><div><br></div><div>But, many times you can if the library can compile with mingw64. When this is the case you build a C project using mingw64, copy the lib files to a directory free pascal is using (see environment settings in lazarus), list the functions in a unit, then put {$linklib youlibname.a} in the implementation section. You may need a few {$ifdef}s for your different platforms.</div>
<div><br></div><div>The benefit of this is that you can easily incorporate (much more easily rewriting) *complex* functionality into your free pascal projects knowing what you are reusing is probably faster, has more features, is more robust, and better tested than a implementation of X that someone reinvented again for free pascal.</div>
<div><br></div><div>Sometimes though you might be are better off using dynamic linking (so, dll on windows) if you know the OS is going to provide features. Examples are msxml.dll vs libxml2.so, gdiplus.dll vs libcario.so, ect. Of course in these cases what probably you need to do is write some lite wrappers, since the apis vary in form (but not function). In those cases I typically use interfaces...</div>
<div><br></div><div>IXmlDocument, IXmlNode // for pasring or building Xml</div><div>ICanvas, IBrush // for drawing</div><div><br></div><div>and then</div><div><br></div><div>function CreateXmlDocument: IXmlDocument; {$fidef}s</div>
<div>function CreateCanvas: ICanvas; {$fidef}s</div></div>