2009-12-10 4 views
1

Я переношу некоторые материалы Visual Studio 2008/VC9 в Code :: Blocks/MinGW и по какой-то причине компоновщик не может найти статическую библиотеку из другого проекта в рабочей области.Linker не может найти статическую библиотеку в том же каталоге

В Visual Studio 2008 я мог бы просто установить статический проект lib как зависимость, и он будет строиться в правильном порядке (то есть статическая библиотека должна быть построена до связывания другого проекта) и связать правильную библиотеку для конфигурации.

Я не мог найти такой вариант в Code :: Blocks, поэтому я обязательно должен был создать статический lib first (libcommon.a), а затем в разделе «Опции сборки» для другого проекта добавить «libcommon.a» в «настройках компоновщика». Файл. Находится в том же каталоге, что и файлы проект, однако я все еще получает ошибку от линкера других проектов говорю, что они не могут найти его ...

ld.exe не может найти -lcommon

Что я делаю, поэтому он не может найти библиотеку, хотя ее право рядом с файлом проектов?

Также существует лучший способ моделирования зависимостей Visual Studio в пределах одного решения/рабочего пространства?

+0

В сообщении об ошибке упоминается «-lcommon», но вы говорите, что ваша библиотека называется «libcommon.a». Я не знаком с Code :: Blocks; делает "-lcommon" переводят на "libcommon.a"? Вы всегда можете запустить File Monitor и посмотреть, какой файл (и в каком каталоге) ищет компоновщик. – Luke

+0

Ну, я специально сказал блокам кода для ссылки «libcommon.a», и он дал компоновщику «lcommon», поэтому я собираюсь пойти с компилятором, не ожидая продолжения «lib» и расширения «.a». Другие библиотеки работают нормально и имеют одинаковую разницу между именем файла и тем, что получает компоновщик. –

ответ

2

По-видимому, каталог, содержащий файлы проекта, не включен в путь поиска компоновщика и должен быть определен явно, добавив «. \» В список каталогов, содержащих файлы библиотеки для проектов.