Войти

Показать полную графическую версию : Как правильно прилинковать либу


vasketsov
06-05-2002, 20:24
Надо прилинковать библиотеку, какую - неважно, только тонкость в том, что надо это сделать
1) не через гуй в настройках проекта, а в самом коде, то есть директивой
2) эта либа должна быть добавлена не в дефолтные, так как проект собирается с включенной опцией класть на дефолтные библиотеки.

То есть
#pragma comment (linker, "/defaultlib:xxx.lib")
и
#pragma comment(lib, "xxx.lib")
работают, но только при условии использования дефолтных библиотек.

Я извиняюсь если это совсем какой-то бред, но в своем MSDN2002Jan я это не нашел, видимо там уже директивы для VS .NET.

ivank
06-05-2002, 21:07
vasketsov
1) не через гуй в настройках проекта, а в самом коде, то есть директивой Можно осведомиться зачем?

А так не работаеть?
#pragma comment( link, "xxx.lib" ) ?

vasketsov
06-05-2002, 21:23
ivank
А так не работаеть?
Работает только если стандартные либы включаются.
Это в моем посте было.
Это и в MSDN написано, ну и я по привычке сам проверил - точно, если дефолтные библиотеки не использовать - не подключается.

А зачем - это уже другой вопрос, но не менее интересный.
Дело вот в чем.
В настройках проекта можно указать откуда брать RTL. То есть там Singlethreaded, Multithreaded, Multithreaded dll, и так далее.
Так вот эта библиотека, а если конкретно, то ntdll.dll экспортирует символы, на которые идет ругань, они видимо конфликтуют со стандартными (то есть, конфликт имен), в частности __chkstk по-моему.

Выход пока только один - отключать стандартные библиотеки, но тогда ручками в настройках каждый раз прописывать на странице линкера эту либу - меня это уже задрало как-то, хотелось бы, чтоб при подключении самого *.h все само линковалось, то есть это в нем будет.

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




© OSzone.net 2001-2012