У меня неуправляемый проект на C++ в Visual Studio 2010. Он использует boost, glut и другую библиотеку от поставщика.Динамическое и статическое связывание и развертывание в Visual Studio 2010
Я создал проект, чтобы создать более "dll-indepenendent" исполняемый файл. Все библиотеки ускорения связаны статически, и нет необходимости в dll в каталоге, где исполняемый файл остается.
То же самое для Glut, я связал статический glut32.lib вместо glut32.dll и снова не проблема.
Я выбрал для библиотек времени выполнения версию NON-DLL, то есть многопоточную отладку (для конфигурации отладки) и конфигурацию Multithreaded for Release.
Теперь продавец, о котором я говорил раньше, предоставляет две альтернативы Vendor.lib и Vendor.dll.
Vendor.lib добавлен в Linker-> Дополнительные зависимости, но во время выполнения мне всегда нужно поместить файл Vendor.dll в тот же каталог исполняемого файла, иначе среда выполнения жалуется, потому что не находит поставщика .dll.
Как решить эту проблему? Я бы хотел, чтобы не помещать в каждый каталог DLL-файл.
Я не хочу помещать dll в ту же директорию exe и вообще какие руководящие принципы для развертывания неуправляемых консольных приложений C++ в Visual Studio?
Я знаю, что есть много вопросов и страниц об этом аргументе, но ни один из них не уточнил мне этот момент.
Некоторые идеи?
Это не зависит от MS. В Linux также есть библиотеки импорта. – rubenvb
Unix имеет два типа «библиотек»: библиотеки (файлы .a) и общие объекты (файлы .so).Поставщик, предоставляющий библиотеку (в общем смысле), обычно предоставляет оба. Если вы ссылаетесь на файл .a, вы ставите ссылку, и если вы ссылаетесь на .so, вы связываете динамически. Проблема с решением Microsoft заключается в том, что 1) у вас есть два разных файла для динамической компоновки, и 2) один из файлов имеет то же имя, что и статическая библиотека. –
Благодарим вас за ответ. Наверное, я не единственный, кто запутался в этой теме. Итак, как вы говорите, есть два типа .lib-файлов, которые создаются, когда необходима динамическая библиотека, а другая - статическая библиотека. Я не нашел другой файл Vendor.lib, поэтому, я думаю, я в первом случае ... Спасибо! – linello