Использование .Библиотеки DLL в моих проектах

#c #visual-studio-2010

#c #visual-studio-2010

Вопрос:

Здравствуйте,
Технические характеристики: VS 2010 C professional edition.

У меня есть проект с некоторыми статистическими функциями, которые я хочу протестировать. Итак, я написал простое тестовое консольное приложение, которое добавил в решение проекта с функциями, которые я хочу протестировать. Вот подробный макет моего проекта:

База проекта содержит классы с функциями, которые используются в моем статистическом приложении под названием ROC. И затем есть roc_test, простое консольное приложение, которое я хочу использовать для тестирования некоторых функций в ROC приложении. Теперь ROC связан с БАЗОЙ, а roc_test имеет ROC в качестве ссылочного проекта. Моя проблема в том, что когда я пытаюсь скомпилировать свой тестовый проект roc_test, компилятор выдает ошибку, в которой говорится, что в моем проекте roc_test отсутствует a .dll-файл, который принадлежит project BASE. roc_test однако, напрямую не связан с BASE. Я не понимаю, почему он выдает такое сообщение и как я могу это исправить. Для наглядности позвольте мне попытаться показать взаимосвязь по-другому.

функцияroc_test вызывает функцию rocfit(..), которая является частью ROC.h. ROC.h, используя функции, написанные в DoubleMatrix.h, которая является частью базового проекта. Надеюсь, я выражаюсь ясно. P.S. Нет смысла показывать код, так как проблема не в коде, а в настройках компоновщика. Спасибо за любую помощь.

РЕДАКТИРОВАТЬ: Мой вопрос в том, как мне избавиться от ошибки? Нужно ли мне также связать мой тестовый проект с БАЗОЙ? Просто не имеет смысла, что я должен это делать. Этого должно быть достаточно, чтобы связать его с ROC. Я прав?

Комментарии:

1. Я думаю, что это связано с тем, что «компилятор выдает ошибку, в которой говорится …»

Ответ №1:

Если он не включен в тот же каталог, что и консольное приложение (или в path), то вам нужно будет включить BASE, поскольку среда выполнения не может разрешить зависимость от BASE с помощью ROC.

Редактировать: просто ссылаться на ROC недостаточно; хотя может быть какой-то вариант сборки, который создает ROC и BASE, а затем связывает их в одну DLL; это может стоить изучить.

Кроме того, вместо использования консольного приложения, в долгосрочной перспективе вам может оказаться лучше использовать модульные тесты. В этой статье msdn объясняется, как использовать тестовые проекты vs2010 с C :

http://msdn.microsoft.com/en-us/library/ms243171.aspx