【发布时间】:2016-05-31 06:32:47
【问题描述】:
我对将类导出为 DLL 有一些疑问。假设我有如下类,我希望从 DLL 中导出 BookStore。这样客户端就可以从BookCollection 中获取Book 的值,例如:getTitle()。
#ifdef _EXPORTING
#define BOOKSTORE_API __declspec(dllexport)
#else
#define BOOKSTORE_API __declspec(dllimport)
#endif
class Book
{
std::string title;
std::string publisher;
char * getTitle();
char * getPublisher();
}
class BookCollection
{
std::vector<Book> books;
int getBooksCount();
Book getBook(int location);
}
BOOKSTORE_API class BookStore
{
BookCollection bookCollection;
BookCollection getBookCollection();
}
因此,我怎样才能成功导出该类以用于其他项目,我可以这样做:
BookStore * bookStore = RandomBookStoreGenerator::createBookStore();
std::cout << bookStore->getBookCollection().getBook(0).getTitle() << '\n';
导出BookStore 是否也会间接导出BookCollection 和Book,或者它们还需要宏来导出?
编辑...
我已导出 DLL 并在测试程序中进行了尝试。以下;
BookCollection bookCollection = bookStore->getBookCollection();
导致错误
LNK2001:未解析的外部符号
任何想法,这可能是因为我没有正确导出类吗?
【问题讨论】:
标签: c++ visual-c++ dll