Ни один из существующих ответов не является правильным: Учитывая следующее в Windows: у вас есть две библиотеки DLL, каждая из которых статически связана с двумя разными версиями стандартных библиотек C / C ++.
В этом случае не следует передавать указатели на структуры, созданные стандартной библиотекой C / C ++ в одной DLL, в другую. Причина в том, что эти структуры могут различаться в двух реализациях стандартной библиотеки C / C ++.
Еще одна вещь, которую вы не должны делать, это освободить указатель, выделенный new или malloc, из одной DLL, которая была выделена в другой. Менеджер кучи также может быть реализован по-разному.
Обратите внимание, вы можете использовать указатели между библиотеками DLL - они просто указывают на память. Это проблема бесплатна.
Теперь вы можете обнаружить, что это работает, но если это работает, то вам просто повезло. Это может вызвать проблемы в будущем.
Одним из возможных решений вашей проблемы является динамическое соединение с CRT . Например, вы можете динамически ссылаться на MSVCRT.DLL. Таким образом, ваши DLL всегда будут использовать один и тот же CRT.
Обратите внимание, я полагаю, что не рекомендуется передавать структуры данных ЭЛТ между библиотеками DLL. Возможно, вы захотите посмотреть, сможете ли вы учесть вещи лучше.
Обратите внимание, я не эксперт по Linux / Unix - но у вас будут такие же проблемы и в этих ОС.