Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > вопрос по линковке VS2008


Автор: mrgloom 27.5.2013, 17:23
был работающий солюшн
к нему я добавил empty project 
в project dependencies проставил зависимость от главного проекта
configuration type стоит .dll
в additional dependencies я эту либу не прописывал
при попытке скомпилировать пишет, что не может найти
fatal error LNK1104: cannot open file '..\debug\my_new_lib.lib'
я так понимаю какая то проблема с путями? где должна находиться либа чтобы она нашлась?

Автор: volatile 27.5.2013, 23:53
Цитата(mrgloom @  27.5.2013,  17:23 Найти цитируемый пост)
где должна находиться либа чтобы она нашлась?


mrgloom, там текущая директория не та где екзешник, а где проект.
поэтому либо относительный путь нужно от него указывать, либо указывать абсолютный путь.
Либо, предпочтительно, указывать вообще без путей, а папку с либой добавить в настройки "Additiona lLibrary Directories"

Автор: mrgloom 28.5.2013, 09:24
Цитата(volatile @  27.5.2013,  23:53 Найти цитируемый пост)

Либо, предпочтительно, указывать вообще без путей, а папку с либой добавить в настройки "Additiona lLibrary Directories" 

так вроде если всё в одном месте лежит то не надо?

я вообще не понимаю почему оно хочет либу, ибо я нигде её еще не использую (кроме проставления связи в project dependencies, но это как я понимаю только лишь порядок компиляции)

например я могу сделать билд этого подпроекта появиться .dll в папке debug, по поиску .lib нигде не появляется.
linker->general->output file это куда пойдет .dll файл
по идее то куда записывается .lib файл указывает linker->advanceed->import library ?

причем в linker->command line есть строчка 
Цитата

/NXCOMPAT /IMPLIB:"..\Debug\Int\my_lib/my_lib.lib" /MACHINE:X86 

но .lib файл там не появляется


причем если поставить configuration type  Static Library (.lib) то всё работает и .lib создаётся.

Автор: volatile 28.5.2013, 10:02
Цитата(mrgloom @  28.5.2013,  09:24 Найти цитируемый пост)
в linker->command line есть строчка 
/NXCOMPAT /IMPLIB:"..\Debug\Int\my_lib/my_lib.lib" /MACHINE:X86 
но .lib файл там не появляется

Вы добавьте хоть одну функцию экспортируемую из вашей длл, и он появицца.

вообще у вас очень что-то сумбурно всё... ( smile )

Автор: mrgloom 28.5.2013, 10:46
еще проблема.

в своем подпроекте включаю в главный хедер(my_lib.h) #include "opencv.hpp" из  C:\OpenCV-2.4.3\build\include
потом в главном проекте в some_file.cpp включаю свой my_lib.h  и получаю ошибку 
fatal error C1083: Cannot open include file: 'opencv.hpp': No such file or directory
если в главный проект добавить в additional include directories C:\OpenCV-2.4.3\build\include то он его находит, но я не понимаю почему я еще и в главный проект должен добавить?


Автор: volatile 28.5.2013, 13:31
Цитата(mrgloom @  28.5.2013,  10:46 Найти цитируемый пост)
почему я еще и в главный проект должен добавить?

потому-что
Цитата(mrgloom @  28.5.2013,  10:46 Найти цитируемый пост)
включаю в главный хедер(my_lib.h) #include "opencv.hpp"

mrgloom, вы какбудто первый день на свет родились.
раз есть в инклудах, значит компилятор будет его искать.

Если вы уверены что пользователям вашей либы не нужна opencv.hpp, не включайте его в главный (точнее экспортируемый) *.h


Автор: mrgloom 29.5.2013, 09:08
ну так я создал отдельный подпроект как раз с той целью чтобы отделить от главной программы всё связанное со стороннеей либой + моими самописными функциями написанными на основе её.
т.е. я хотел  как раз просто подключить my_lib.h и не заботиться о дополнительных зависимостях.
или так вообще нельзя сделать?

какой тогда смысл в подпроекте солюшена? я бы мог просто создать папку в главном проекте и туда написать свои самописные функциии основанные на сторонней либе, и либу прописать тоже в главный проект.

Автор: volatile 30.5.2013, 16:00
mrgloom, 
Цитата(mrgloom @  29.5.2013,  09:08 Найти цитируемый пост)
ну так я создал отдельный подпроект как раз с той целью чтобы отделить от главной программы всё связанное со стороннеей либой 

Ну так и разделите. Зачем тогда включать 
Цитата(mrgloom @  28.5.2013,  10:46 Найти цитируемый пост)
включаю в главный хедер(my_lib.h) #include "opencv.hpp"

Включите его внутри своего подпроекта (например в сипипишник).
Зачем его наружу выставлять то?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)