«D» в названии означает отладку. Это явный индикатор сборки Debug Visual Studio. Используйте сборку Release, и все будет хорошо.
Если целевая система еще не имеет среды выполнения C, вы должны, как правило, использовать официальный установщик для ее установки. Некоторые из версий среды выполнения вы можете знать о таковы:
Вы можете также разработать полный пакет установки, который включает распространяемые библиотеки DLL (но никогда не - отладочная DLL), необходимая вашему приложению, и правильно обрабатывает сборки сборок (SxS) в кеш системной сборки, используя метод, известный как модули слияния. Этот подход проще, если у вас есть полная установка Visual Studio (а не бесплатная версия VS Express), но в результате установки пакетов по-прежнему могут вообще не работать с установкой среды выполнения на старых (например, Win 2K или 9x) платформах.
Статья Redistributing Visual C++ Files в MSDN описывает, что такое правила и как их соблюдать как можно проще. Это обеспечивает отправную точку, чтобы узнать больше о многих проблемах, связанных с развертыванием.
Если исходная DLL, функциональность которой вы заменяете, не имеет ссылки на MSVCR90.DLL, то она должна быть статически связана с временем выполнения. Вероятно, вы должны проверить предположения о предполагаемом приложении, которое будет вызывать вашу DLL. Смешивание библиотек времени выполнения C в одном процессе не всегда легко.Если хостинг-приложение уже использует MSVCR90.DLL, вам тоже нужно. Это большая проблема, чем подходит для ответа на конкретный вопрос, поэтому я бы посоветовал вам исследовать его и задавать новые вопросы по мере необходимости.
Другим способом избежать установки более поздних библиотек времени выполнения является ссылка на MSVCRT.DLL, которая распространяется в современных версиях окон в виде системного компонента. Это среда выполнения, поставляемая с Visual C 6.0, слегка обновляемая для критических проблем и поддерживающая ток в соответствии с ОС. Он вообще недоступен для 64-битных сборников, и довольно сложно обмануть Visual Studio, чтобы использовать его вместо более новой среды выполнения.
Вам всегда нужно беспокоиться, если вы пишете плагин для приложения, так что вы не получите несовместимую реализацию malloc/free, например. В любом случае D означает Debug, и есть много причин никогда не развертывать сборку Debug. – RBerteig
@RBerteig: В общем, вы правы в malloc/free и т. Д., Но в этом случае ProfK воссоздает существующую DLL, которая не имеет зависимости от DLL CRT. Он не собирается вводить проблемы, создавая свою новую DLL-работу одинаково. – RichieHindle
Извините, перечитывая, похоже, что я, возможно, немного оторвался. Я часто видел совет, который давал просто ссылку на статику, когда реальной проблемой является сборка Debug, и это мое домашнее животное в наши дни. На самом деле это может нанести вред, если хостинг-приложение требует, чтобы зависимость действительно была в той же самой среде выполнения. Если мы предположим, что старая DLL действительно работает как построенная, то статическая связь действительно может быть правильным ответом. – RBerteig