Objects in DLLs
BlitzMax Forums/BlitzMax Programming/Objects in DLLs
| ||
It would be a lot easier if I could pass objects directly to and from a DLL, instead of their integer handle. I know objects still have to be kept track of internally, and I don't expect a dll to recognize objects created by the main program, but has anyone tried compiling a dll and passing objects to and from the main program?C++ App BlitzMax DLL obj <--CreateThing:Object() obj -->DoSomething(obj:Object) |
| ||
Yes it can be done with some creative headers and having a bogus reference back to itself to keep GC from cleaning it up. Much faster than TMap. Handle stuff. Although, I am not keen on the GCEnter GCExit coding reguired to use Max in a DLL Doug |
| ||
Any object that gets created has a million links attached to it. GCC is not a problem. And I don't need C to actually access anything in the object, it's just a handle. As far as I know you only need GCEnter, not GCExit. You can have a constant COMPILE_DLL and put this at the start of each exposed function: If COMPILE_DLL GCEnter() The if statement would be skipped if COMPILE_DLL is set to 0. |