2009-12-09 4 views
2

Я работаю на C/C++ с помощью Visual Studio 2008. Я считаю, что меня не интересует, какие библиотеки времени исполнения используются моим кодом, поскольку у меня есть настройка разработчика. Но когда отправляется исполняемый файл, используемые библиотеки времени выполнения должны быть отправлены вместе. Я прав?Какие библиотеки времени выполнения отправляются?

Если да, то как я могу определить, какие общие библиотеки фактически используются? Или есть какие-нибудь библиотеки, которые мы можем отправить без необходимости знать?

ответ

2

Вы правы, вам нужно отправить версию библиотеки времени выполнения C, которая соответствует версии, с которой вы связали приложение. Если вы компилируете Visual Studio 2008, вы хотите использовать Microsoft Visual C++ 2008 Redistributable Package. Как отмечали другие люди, вы можете проверить файл манифеста приложения, чтобы увидеть, с какой именно версией библиотек времени выполнения C он связан.

Перед отправкой всегда лучше всего установить продукт на чистой (то есть не разработчике) виртуальной машине и запустить Microsoft's Dependency Walker utility, чтобы убедиться, что ваше приложение использует правильные библиотеки времени выполнения C.

+0

Спасибо! Emerick –

+0

У меня есть тестовая машина, где Visual Studio не установлена, и я видел из манифеста, а также Dependency Walker, что есть зависимость от Microsoft.VC90.CRT или, в частности, MSVCP90.dll, MSVCR90.dll. –

+0

Contd .. Мое приложение - приложение Java, работающее в Tomcat. Он использует C++ dll, которые присутствуют в apache-tomcat/bin/build/dll. Я скопировал все файлы MSVC *. * Вместе с файлом манифеста в этой папке, а затем в папке bin, а затем в папке apache-tomcat. Но ошибка приложения показывается при запуске приложения. Настройка переменной среды Path также не помогла. Я делал все это, думая, что если я вставляю DLL CRT в рабочий каталог, зависимость должна быть удалена. Вы можете что-то предложить? –

1

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

+0

Спасибо, Андреас. Это было полезно. –

2

Вам необходимо отправить файлы с dll.

вы можете угадать большинство из них, а для остальных вы можете использовать программу «Dependency Walker», которая показывает зависимости от исполняемого файла.

+0

Я слышал, что ходок зависимостей не работает должным образом, так как MS вводит бок о бок сборки. –

+0

Он обновлен, чтобы лучше обрабатывать сборочные сборки. См. Ссылку в моем ответе. –

+0

Я думаю, что ключевое слово здесь «лучше», вы все еще не можете полагаться на получение от него точной информации. Лучше использовать файл манифеста. –

Смежные вопросы