Каков наилучший способ распространения вашего SDK, если конечный пользователь должен установить связь с Debug CRT? - PullRequest
1 голос
/ 21 сентября 2011

Я работаю в операторской компании, и мы предоставляем SDK для наших клиентов. Исторически мы предоставили только сборку выпуска нашего SDK, которая была построена на неотладочной CRT. В рамках нашего пакета SDK мы приводим ряд примеров использования SDK. Примеры имеют конфигурации проекта Debug, которые используют CRT отладки. В некоторых случаях мы сталкиваемся со странным поведением из-за того, что эти примеры и библиотека, с которой они связываются, используют разные CRT.

Мои вопросы: как правильно подходить к такой ситуации? Должны ли мы распространять отладочную версию нашей библиотеки, которая использует отладочный CRT? Пока мы не предоставляем pdb или, самое большее, удаленный pdb, вся конфиденциальная информация все равно должна оставаться скрытой. Правильно ли предположить, что при этом не должно быть никаких других негативных эффектов, кроме большего, не оптимизированного двоичного файла?

Является ли обычной практикой распространение двоичного файла отладки, связанного с отладочным CRT, или мы должны просто продолжать распространять только сборку выпуска?

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Да, вам нужно будет распространять сборки Debug и Release вашей библиотеки.Построен с соответственно / MDd и / MD, чтобы CRT можно было использовать совместно.Также существуют разные версии, построенные на, скажем, версиях CRT VS2005, VS2008 и VS2010.Чтобы сузить его до одной библиотеки, вам нужно тщательно разработать публичный интерфейс, чтобы он не отображал объекты C ++ или указатели, которые должны быть освобождены клиентским кодом.Исключения тоже табу.Распространенным решением является использование COM.В частности, интерфейс, совместимый с Automation, может использоваться большинством языков, обычно используемых в Windows.

0 голосов
/ 21 сентября 2011

Можно рассмотреть сборку с оптимизированной отладкой, где она настроена на использование отладочных версий библиотек, но все флаги оптимизации установлены так же, как и в сборке выпуска. Это предотвратит незначительные различия в исполнении, которые могут повлиять на работу пользователя.

...