Rahul@puna Ответов: 1

Статическое и динамическое связывание в исходном файле (компилятор сборки windows) - ошибки компоновщика


Всем Привет,

Я использую среду сборки win7 и организовал код с помощью dirs и исходного файла. Я использую команду сборки windows для создания исходных файлов. Во время моего развития я столкнулся с проблемой. Позвольте мне описать сценарий.

ProjectA.dll, Проект.lib-это сторонняя библиотека DLL со своими .lib и заголовочный. Мы в том числе и этот ProjectA.dll чтобы построить новую статическую библиотеку в проекте б.Либ. До сих пор компиляция работает нормально.

Теперь мое требование состоит в том, чтобы использовать статическую библиотеку ProjectB.lib в третьем проекте ProjectC, который будет генерировать DLL. Поэтому я включил ProjectB.lib в исходный файл ProjectC в разделе TARGETLIBS. Но при построении ProjectC он дает неразрешенную ошибку внешнего символа для функций, которые находятся в ProjectA.dll и используется в ProjectB. lib. Эта ошибка компоновщика отображается в файле ProjectB.lib в выводе команды сборки.

Я не могу понять, чего здесь не хватает.

Пожалуйста помочь. Любые предложения будут высоко оценены.

Пожалуйста, дайте мне знать, что я не в состоянии должным образом объяснить этот сценарий.

С уважением

Рахул

Что я уже пробовал:

Все, что я описал в описании проблемы

Richard MacCutchan

Вам нужно включить ProjectA.lib в сборку для ProjectC.

1 Ответов

Рейтинг:
1

KarstenK

Вы должны полностью включить свои сторонние файлы в ProjectC, потому что он не связан статически в ProjectB.


Rahul@puna

Привет, спасибо за ваш ответ. На самом деле я включил заголовочный файл, а также предоставил ссылку lib, как упоминалось в посте в разделе TARGETLIBS исходного файла, но все еще получаю проблему. Позвольте мне объяснить на примере:
Предположим, у меня есть функция в ProjectA.dll как projectAfun();
Теперь эта функция используется в ProjectB.lib. Когда я строю ProjectB, это правильно компилируется. Теперь, когда я использую static lib ProjectB.lib в своем ProjectC, а также включаю заголовочный файл ProjectA и даю ссылку на ProjectA. lib в ProjectC, я все еще получаю следующую ошибку -
ProjectB. lib ( ProjectB. obj): ошибка LNK2001: неразрешенный внешний символ projectAfun

С уважением