У меня есть набор связанных классов С++, которые необходимо обернуть и экспортировать из DLL таким образом, чтобы их можно было легко использовать библиотеками C/FFI. Я ищу некоторые "лучшие практики" для этого. Например, как создавать и освобождать объекты, как обращаться с базовыми классами, альтернативными решениями и т.д.
Некоторые основные рекомендации, которые я имею до сих пор, - это преобразовать методы в простые функции с дополнительным аргументом void *, представляющим указатель 'this', включая любые деструкторы. Конструкторы могут сохранять свой исходный список аргументов, но должны возвращать указатель, представляющий объект. Вся память должна обрабатываться с помощью одного и того же набора распределений по всему процессу и бесплатных подпрограмм и должна быть с возможностью "горячей" замены в некотором смысле либо с помощью макросов, либо иначе.