Добавление DLL в качестве статической библиотеки в Visual C ++ - PullRequest
0 голосов
/ 03 января 2012

У меня есть визуальный студийный проект под названием MyKinectDll, который я компилирую как DLL.У меня есть еще один проект под названием MyKinectApp, который является исполняемым файлом.У меня они в одном решении.Я добавил зависимость от MyKinectApp в MyKinectDll.Я добавил ссылку из MyKinectApp в MyKinectDll.Я добавил местоположение MyKinectDll в каталоги дополнительных включений MyKinectApp.Затем в своем коде я добавил #include "MyKinect.h", который является одним из заголовков в MyKinectDll, и он распознается.Но когда я компилирую, только MyKinectDll собирается успешно, и я получаю ошибки в MyKinectApp с жалобами на отсутствие заголовочных файлов.Эти заголовочные файлы вызываются в MyKinect.h и присутствуют в других местах MyKinectDll и собирают их самостоятельно.

Я не уверен, нужно ли мне ссылаться на .lib MyKinectDll в настройках компоновщика, но я пробовал это, и я получаю ту же ошибкуЧто я делаю не так?

Большое спасибо за вашу помощь.

1 Ответ

2 голосов
/ 03 января 2012

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

Это потому, что вы статически связываетесь (что будет связываться с библиотекой lib).файл, а не dll).Компоновщик должен посмотреть в заголовочных файлах библиотеки, на которую вы ссылаетесь, чтобы увидеть объявления класса / метода, так как они недоступны в файле lib.

Если вы выполняли динамическую компоновку, компоновщикможет ссылаться на объявления класса / функции как экспортированные в интерфейсе dll, так что вам не нужно будет включать каталоги заголовков в этом случае ..

...