Если сигнатуры функций, экспортируемых из ControllerAPI и WrapperAPI, не изменились, ваши привязки должны быть точными, статическими или динамическими.
Однако, если типы и объекты, используемые функциями (вход, выход, возвращаемые параметры), зависят от внешней библиотеки; тогда у вас могут возникнуть проблемы.
Например, скажем, если ControllerAPI выделяет память с одной версией среды выполнения C, а WrapperAPI ожидает, что сможет освободить ее самостоятельно - тогда в этом случае они оба должны быть связаны с одной и той же версией среды выполнения C , Если вы воссоздали проект в VS2008 вместо его импорта и обновления - тогда ваши цели компиляции по умолчанию и импортированные библиотеки могли измениться. Подобные проблемы могут наблюдаться в библиотеках, созданных с типами, известными для MFC, ATL и т. Д.
К сожалению, вам нужно будет проверить эти сценарии вручную, но если вы можете отметить следующие пункты, у вас все будет хорошо. Я также должен отметить, что эти вещи также будут проверяться между любыми двумя заданными версиями Visual Studio и даже любыми двумя сборками для разных целей компиляции или версий Platform SDK.
- Нет случаев, когда одна из библиотек DLL должна знать ссылки, связанные с другой библиотекой DLL (выделение памяти / дескриптора / ресурса). Тем не менее, это нормально, если WrapperAPI учитывает элементы из ControllerAPI и обрабатывает их соответствующим образом (например, ControllerAPI что-то выделяет, WrapperAPI использует это, а затем возвращает его обратно в ControllerAPI для освобождения / уничтожения).
- Нет различий в выравнивании памяти в структурах, используемых обеими DLL.
- Нет изменений в типах параметров, которые определены. Не упустите случаи, когда одна версия объявляет переменную типа, которая является 32-битной, но при перекомпиляции в VS2008 может быть 64-битной при некоторых целях компиляции (LONG).
- Нет изменений в соглашении о вызовах (cdecl / pascal / и т. Д.) Для экспортируемых / импортируемых функций DLL и любых типов параметров функций.