Debug DLL of exporter plugin

You see these crashes due to the std::string objects in the import/export API. These get copied between SketchUp and the exporter plugin. So they have to be on the same heap manager. Debug and Release versions of the C++ runtime have different heaps and they won’t allow allocating memory on one and releasing it on the other. Also, the sizes of the string objects may not agree between debug and release.

I think the only way to do this is to write a shim DLL that’s built for Release and forwards the API calls to your DLL through a C API where the strings are plain C style strings. I realize that would be a big nuisance to maintain though, so I would just turn off optimizations in Release and “debug” that way.

Sorry about the inconvenience but this is partly due to C++ not having a standardized binary interface yet. But in retrospect, our API could have been cleaner and could have avoided these issues.

Bugra

1 Like