2009-08-22 3 views
1

Я работаю с API, который доставляется клиентам как статическая библиотека. Эта библиотека, в свою очередь, использует другую стороннюю библиотеку, построенную с помощью компилятора Intel. Эта библиотека имеет зависимости от некоторых библиотек Intel, которых у меня нет. Когда я создаю тестовое приложение, я прохожу мимо него, указав эти библиотеки в «Игнорировать конкретную библиотеку» в Visual Studio. Что на самом деле происходит здесь? Где VS получает эти символы вместо этого? ТакжеВлияние «Игнорировать определенную библиотеку» в Visual Studio

Удалят ли оптимизации, предназначенные для компилятора Intel?

Если вместо этого я получаю эти библиотеки, это приведет к ограничениям на процессор для исполняемого файла, связанного с моей библиотекой?

ответ

1

Процитирует документацию VS, этот вариант ...

... позволяет удалить указанную библиотеку или библиотеки из списка библиотек он ищет при разрешении внешних ссылок . Компоновщик устраняет ссылки на внешние определения от поиска первых в библиотеках, которые вы явно указать, то в дефолте библиотеки, указанной с опцией /DEFAULTLIB, а затем в библиотек по умолчанию, указанных в .obj файлов.

I.e. он сообщает компоновщику не рассматривать указанные библиотеки при разрешении символов. Пока компоновщик может найти символы в других библиотеках, ссылка не должна прерываться.

Если у вас нет библиотек, то я удивлен, что вам нужно указать что-либо - я не вижу, как это может повлиять.

Если вы хотите посмотреть, что на самом деле делает компоновщик, установите параметр «Показать прогресс» в/VERBOSE и перейдите.

+0

Да, я видел этот параграф на MSDN. Но в моем случае я предполагаю, что сторонняя библиотека (или некоторые из ее объектных файлов) должна каким-то образом сообщить компоновщику, что она предпочитает связываться с библиотеками Intel. Таким образом, остается вопрос - проигнорирует ли этот «запрос» любой удар производительности? (Я попробую вариант/VERBOSE, хотя) – 2009-08-24 18:07:45

+0

Возможно, библиотека специфицирует библиотеки Intel с помощью директивы #pragma comment (linker ...). Знаете ли вы, какие символы теперь находятся в неинтеллектуальных библиотеках? Я думаю, возможно, что реализации в intel libs были оптимизированы вручную, чем то, к чему вы сейчас привязываетесь, - невозможно сказать наверняка, не зная больше об Intel libs и о том, с чем вы сейчас связываетесь. Честно говоря, я буду больше беспокоиться о том, что они делают совершенно разные вещи. –

+0

Спасибо, теперь я проанализировал один из объектных файлов сторонней библиотеки, используя dumpbin, и нашел, что у него есть записи «defaultlib:» (libirc.lib, svml_disp.lib и т. Д.). Я не уверен, как я могу видеть, какие символы затронуты, когда я предпочитаю игнорировать эти библиотеки, но, возможно, их нет. Ядро вопроса, которое, как я думаю, является сторонним, думает, что они делают нам одолжение, создавая с помощью Intel Compiler, и делает это предложение бесполезным, когда мы не используем оптимизированные реализации в любом случае ... – 2009-08-27 17:45:43

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