Ах, радостей библиотек DLL и зависимостей в Visual Studio. Клянусь, у C# -кодеров это легко :)
Вы уверены, что файл LIB на самом деле создан? Если ваш проект DLL не экспортирует какие-либо символы, вы не получите файл lib, и у вас не будет ничего, на что можно ссылаться. Таким образом, вы должны убедиться, что:
Ваш DLL Project определяет нечто вроде MYPROJECTNAME_EXPORTS
. Visual Studio определяет этот символ для вас, когда вы устанавливаете соответствующий флажок при создании проекта. Если вы этого не сделали, это довольно просто. Убедитесь в том, что вышеупомянутый символ в директивах препроцессора для вашей DLL, и в общем файле заголовка убедитесь, что следующий определяется:
#if defined(MYPROJECTNAME_EXPORTS)
#define MYPROJECT_API __declspec(dllexport)
#else
#define MYPROJECT_API __declspec(dllimport)
#endif
После того, как мы знаем, что MYPROJECT_API
надлежащим образом определены, мы должны убедиться, что любой класс или функции, которые мы хотим экспортировать, есть что в его декларации:
class MYPROJECT_API SomeClass
{
}; // eo class SomeClass
и этот класс должен быть реализован и на самом деле сделать что-то, что компилятор не оптимизирован.
Вкратце, причина, по которой вы не можете найти файл .lib
, состоит в том, что ни один из них не был создан, потому что из него не были экспортированы никакие символы.
Чтобы уточнить, вы добавили ** dll_test.lib ** в Properties-> Linker-> Input и его путь к Properties-> Linker-> Additional Library Directories? –
Нет, я этого не делал. Но он не должен создавать lib, он должен создавать dll. –
Вам необходимо иметь файлы заголовков, DLL-файл * и * соответствующий LIB-файл, чтобы статически ссылаться на проект DLL. Фактический код в DLL, конечно, но LIB-файл необходим, чтобы компоновщик мог ссылаться на DLL статически. Когда вы компилируете свой DLL-проект, компоновщик должен создавать DLL-файлы и их LIB-файлы. –