Как я могу использовать некоторые конкретные DLL в C / C ++? - PullRequest
0 голосов
/ 27 апреля 2010

Как и msvcr70/msvcr80/msvcr90.dll, на что похож код, который дает указание компоновщику динамически связываться с одним из них?

Или это как-то связано с c/c++, но cmake?

Ответы [ 4 ]

1 голос
/ 27 апреля 2010

Как правило, среда выполнения C / C ++, на которую вы ссылаетесь, зависит от версии VisualStudio, которую вы используете. (msvcr80.dll -> VS2005, msvcr90.dll -> VS2008 и т. д.)

Некоторое более глубокое понимание того, как это работает, и некоторые хитрости, как это можно сделать, вы можете прочитать в этом блоге .

1 голос
/ 27 апреля 2010

Вы указываете файл .lib при компоновке, и соответствующий файл .dll будет использоваться во время выполнения, поэтому (например), если вы хотите использовать msvcr70.dll, вы захотите связать с msvcr70.lib.

1 голос
/ 27 апреля 2010

Конкретными примерами, которые вы приводите, являются библиотеки DLL, которые обычно связаны через манифесты и параллельно, по крайней мере, при сборке приложений (с правильными настройками проекта) из Visual Studio. Почему вы пытаетесь указать компилятору связать их по коду?

Наиболее часто используемый способ ссылки на конкретную DLL - это когда у вас есть библиотека для библиотеки DLL, а затем использовать прагму

 #pragma comment(lib, "<library name>")
0 голосов
/ 27 апреля 2010

да, конечно, вы хотите сначала понять DLL / связывание ... http://www.infernodevelopment.com/how-create-dll-c-using-run-time-dynamic-linking

вопрос, как написано, не отвечает

Примечание: не уверен, что вы имеете в видуCmake, но вы можете легко указать библиотеки ссылок в вашем файле CMakeLists.txt ... исключение составляют библиотеки DLL, которые вы заметили, потому что они зависят от платформы.Вам понадобится что-то в скрипте CMake для проверки версий MSVC.

Зачем вам ссылаться на более раннюю версию, хотя в Vista и более поздних версиях есть VC9, и если кто-то используетXP, вы можете просто дать им «распространяемый пакет» для VS2008 / 2010 ...

...