В рамках обучения С++ я написал простую библиотеку классов + приложение, которое ссылается на нее. Все строит, за исключением того, что библиотека классов не генерирует .lib файл, что приводит к тому, что приложение бросает "LINK: фатальная ошибка LNK1104: невозможно открыть файл". Это кажется очень разумным; очевидно, если нужного файла нет, там ошибка, и это фатально. (Заметка: у меня еще нет книги)
Итак, я пошел искать причины .lib файл не может быть сгенерирован. Мой поиск-фу, между прочим, довольно слаб. Все, что я нашел, это то, что если библиотека не имела тегов __declspec (dllexport), она не экспортировала бы .lib.
Теперь я опубликую содержимое заголовка и .cpp библиотеки классов (простой класс "Консоль" с одним методом "Write (std::string)" ).
Заголовок:
// Extensions.h
#pragma once
#include "stdafx.h"
namespace Extensions {
__declspec(dllexport) class Console
{
public:
__declspec(dllexport) static void Write(std::string text);
};
}
Я не уверен, что мне нужно пометить функцию, когда я пометил класс, но я могу проверить, когда это работает.
И файл .cpp:
// This is the main DLL file.
#include "stdafx.h"
// #include "Console.h"
namespace Extensions {
void Console::Write(std::string text)
{
std::cout << text.c_str();
}
}
Я проверил, и он настроен на создание динамической библиотеки ссылок.
Спасибо.