Visual Studio 2008 C ++. Проблема со ссылкой на проект DLL - PullRequest
1 голос
/ 07 февраля 2011

У меня есть решение с двумя проектами: один простой dll с простым классом (dll_test).Второй проект ссылается на проект dll и должен использоваться для тестирования проекта dll (dll_tester).Проект dll строится нормально, но проект тестера всегда жалуется на невозможность найти dll_test. lib вместо dll_test. dll , как и положено.

Сноваэто с Visual Studio 2008 на компьютере с Windows 7.Я не думаю, что это имеет значение, но я начал решение с проекта dll_test и позже добавил проект dll_tester.

Кто-нибудь знает, как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

Ах, радости библиотек DLL и зависимостей в Visual Studio.Клянусь, кодерам C # это легко:)

Вы уверены, что файл LIB действительно создан?Если ваш проект DLL не экспортирует какие-либо символы, вы не получите файл lib, и, следовательно, вам не на что будет ссылаться.Поэтому вам необходимо убедиться, что:

  1. Ваш проект DLL определяет что-то вроде MYPROJECTNAME_EXPORTS.Visual Studio определяет этот символ для вас, когда вы устанавливаете соответствующий флажок при создании проекта.Если вы этого не сделали, это довольно просто.Убедитесь, что вышеупомянутый символ находится в директивах препроцессора для вашей DLL, и в общем заголовочном файле убедитесь, что определено следующее:

    #if defined(MYPROJECTNAME_EXPORTS)
    #define MYPROJECT_API __declspec(dllexport)
    #else
    #define MYPROJECT_API __declspec(dllimport)
    #endif
    
  2. Как только мы узнаем, что это MYPROJECT_APIправильно определено, мы должны убедиться, что любой класс или функция, которую мы хотим экспортировать, имеет это в своих объявлениях:

    class MYPROJECT_API SomeClass
    {
    }; // eo class SomeClass
    

И этот класс должен быть реализован и фактически do что-то, что компилятор не оптимизировал.

Короче говоря, причина, по которой вы не можете найти файл .lib, заключается в том, что ни один не был сгенерирован, поскольку из него не было экспортировано никаких символов.

0 голосов
/ 07 февраля 2011

щелкните правой кнопкой мыши dll_tester в обозревателе решений и посмотрите «Зависимости проекта ...» и убедитесь, что проект dll отмечен

...