При подключении написанной мной библиотеки Library.dll в проект возникают ошибки
Ошибка LNK2019 ссылка на неразрешенный внешний символ "public: class std::basic_string,class std::allocator > __thiscall Contact::PhoneNumber(void)" (?PhoneNumber@Contact@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) в функции _main Лабораторная работа 4-8 \mac\Home\Documents\Университет\Операционные системы\Лабораторная работа 4-8\Лабораторная работа 4-8\Лабораторная работа 4-8.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ "public: class std::basic_string,class std::allocator > __thiscall Contact::Name(void)" (?Name@Contact@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) в функции _main Лабораторная работа 4-8 \mac\Home\Documents\Университет\Операционные системы\Лабораторная работа 4-8\Лабораторная работа 4-8\Лабораторная работа 4-8.obj 1
Library.h:
#ifdef LIBRARY_EXPORTS
#define LIBRARY_API __declspec(dllexport)
#else
#define LIBRARY_API __declspec(dllimport)
#endif
#include "stdafx.h"
#include <list>
#include <string>
#include "windows.h"
#include <string>
#include "Contact.h"
#include <algorithm>
//Минимально возможное значение хеша
static const size_t min_hash_value = 48;
// Максимально возможное значение хеша
static const size_t max_hash_value = 122;
// Размер хеш-таблицы
static const size_t ht_size = 74;
list<Contact> hashtable[ht_size];
__declspec(dllexport) void Add(string, string);
__declspec(dllexport) bool Delete(string);
__declspec(dllexport) string FindContact(string);
__declspec(dllexport) list<Contact> GetContacts(int);
__declspec(dllexport) void WriteToFile(HANDLE);
__declspec(dllexport) void ReadFromFile(HANDLE);
size_t GetHashCode(Contact);
size_t GetHashCode(string);
Лабораторная работа 4-8.cpp:
// Лабораторная работа 4-6.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <string>
#include <list>
#include <iostream>
#include "windows.h"
#include "Library.h"
#include "Contact.h"
using namespace std;
int main()
{
setlocale(LC_ALL, "russian");
string name, phonenumber;
HANDLE File = CreateFile(TEXT("Z:/Desktop/File.txt"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
ReadFromFile(File);
CloseHandle(File);
string menu;
while (menu != "0")
{
system("cls");
cout << "Список контактов:" << endl << endl;
for (int i = 0; i < 74; i++)
{
list<Contact> list = GetContacts(i);
for each (Contact C in list)
{
cout << C.Name() << ": " << C.PhoneNumber() << endl;
}
}
cout << endl << "Выберите действие:" << endl << "1 - Добавить контакт" << endl << "2 - Удалить контакт" << endl << "3 - Поиск контакта по имени" << endl << "0 - Выход\t\t";
getline(cin, menu);
if (menu == "1")
{
cout << endl << "Введите имя контакта: ";
getline(cin, name);
if (name != "")
{
cout << "Введите номер телефона: ";
getline(cin, phonenumber);
if (phonenumber != "") Add(name, phonenumber);
else
{
cout << "Ошибка!" << endl << "Необходимо ввести телефонный номер" << endl;
system("PAUSE");
}
}
else
{
cout << "Ошибка!" << endl << "Необходимо ввести имя контакта" << endl;
system("PAUSE");
}
}
else if (menu == "2")
{
cout << endl << "Введите имя контакта для удаления: ";
getline(cin, name);
if (name != "" && Delete(name));
else
{
cout << "Контакт не найден!" << endl;
system("PAUSE");
}
}
else if (menu == "3")
{
cout << endl << "Введите имя контакта для поиска: ";
getline(cin, name);
if (name != "") cout << "Номер телефона: " << FindContact(name) << endl;
else cout << "Контакт не найден!" << endl;
system("PAUSE");
}
}
File = CreateFile(TEXT("Z:/Desktop/File.txt"), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
WriteToFile(File);
CloseHandle(File);
return 0;
}
На всякий случай Contact.h:
#pragma once
#include <string>
#include <vector>
using namespace std;
class Contact // Содержит имя контакта и телефонный номер
{
private:
string name;
string phonenumber;
public:
string Name(); // Имя контакта
string PhoneNumber(); // Телефонный номер
Contact(string, string);
bool operator==(string);
};
Причем, если закомментить эту часть
for each (Contact C in list)
{
cout << C.Name() << ": " << C.PhoneNumber() << endl;
}
То ошибки пропадают. Как я понял, ругается на string...