Bob Shaffer wrote:
Peter Vreman said:
While searching the web for the answer to a somewhat common question: Is it possible to link C++ libraries to Free Pascal programs? I came across a reply on this mailing list. The answer is no, and it won't probably be possible any time soon. The suggestion I read there was fairly simple. Rewrite the library in Free Pascal. While I don't particularly want to do that, it did make me wonder about something else:
Is it possible to link Free Pascal to C++? A little more specifically, is it possible to use object-oriented pascal code in a C++ program?
Only with a wrapper unit that exports only normal functions/procedures (not methods) declared with cdecl it'll be possible.
Do you mean possible to link the C++ to a pascal unit, or vice-versa?
As far as linking the C++ into a pascal unit goes, I could possibly manage to write a wrapper library (in C++) where I could maybe make a struct for the data and pass it to all of the functions, and then link them all into pascal with the cdecl stuff, and then maybe even make a pascal object that's a wrapper for those things, but it just sounds like it would get uglier and uglier as we go... The general answer of "it's not possible" is acceptable to me.
Maybe we can go the other way, though? Maybe I can make a unit full of objects in pascal, and then link that to C++ programs. Would that be possible without having to put wrappers over wrappers, or am I pretty much stuck maintaining the library in both C++ and Pascal if I want it in both?
In general, it requires wrappers, anything else isn't possible. However, if you do a good library design, it should be possible. Look at e.g. COM: It has the two most important properties of OOP: inheritance and polymorphism and it is portable between languages. I.e. creating pure virtual class interfaces makes a library portable between languages possible and it's still OOP.
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal