Выдает ошибки LNK2019 и LNK1120 в Visual Studio при подключении статической библиотеки. Сборка статической библиотеки правильная. Вставила файлы Library.lib и Library.h в папку libs. Ошибки красным не подчеркиваются. Помогите исправить проблему. Код на с++.
main.cpp
#include
#include
#include "..\libs\Library.h"
using namespace std;
int main() {
setlocale(0, "");
int count;
cout << "Введите количество работников: ";
cin >> count;
Rabotnik* rabotnik = new Rabotnik[count];
Zap3(rabotnik, count);
int arifm = FindSrZarp(rabotnik, count);
string famil = Famil(rabotnik, count);
cout << endl;
cout << "Средняя зарплата: " << arifm << endl;
cout << "Фамилии людей с зарплатой выше среднего: " << famil << endl;
delete[] rabotnik;
return 0;
}
Library.h
#pragma once
#include
using namespace std;
struct Rabotnik {
string fio;
string data;
int zarplata;
};
Rabotnik* Zap3(Rabotnik* rabotnik, int count);
int FindSrZarp(Rabotnik* rabotnik, int count);
string Famil(Rabotnik* rabotnik, int count);
void UpFirstLetter(string& str);
Library.cpp
#include
#include "Library.h"
using namespace std;
Rabotnik* Zap3(Rabotnik* rabotnik, int count) {
for (int i = 0; i < count; i++) {
cout << "Введите фио работника " << i + 1 << ": ";
cin.ignore();
getline(cin, rabotnik[i].fio);
cout << "Введите дату рождения работника " << i + 1 << ": ";
cin >> rabotnik[i].data;
cout << "Введите зарплату работника " << i + 1 << ": ";
cin >> rabotnik[i].zarplata;
}
return rabotnik;
}
int FindSrZarp(Rabotnik* rabotnik, int count) {
int sum = 0;
for (int i = 0; i < count; i++) {
sum += rabotnik[i].zarplata;
}
int arifm = sum / count;
return arifm;
}
void UpFirstLetter(string& str) {
if (islower(str[0])) {
str[0] = toupper(str[0]);
}
}
string Famil(Rabotnik* rabotnik, int count) {
string result;
int arifm = FindSrZarp(rabotnik, count);
for (int i = 0; i < count; i++) {
if (rabotnik[i].zarplata > arifm) {
result += rabotnik[i].fio.substr(0, rabotnik[i].fio.find(' ')) + "\n";
UpFirstLetter(result);
}
}
return result;
}
Ответы
Ответ:
Ошибки LNK2019 и LNK1120 в Visual Studio при подключении статической библиотеки обычно возникают из-за того, что библиотека не может найти заголовочный файл, который она использует. В вашем случае библиотека Library.lib пытается найти заголовочный файл Library.h, но не может его найти.
Чтобы исправить эту проблему, вам необходимо добавить заголовочный файл Library.h в проект, который использует библиотеку. Это можно сделать несколькими способами.
Первый способ - добавить заголовочный файл Library.h в папку Header Files проекта. Для этого откройте проект в Visual Studio и перейдите в окно Solution Explorer. Щелкните правой кнопкой мыши папку Header Files и выберите пункт Add > Existing Item. Выберите файл Library.h и нажмите кнопку Open.
Второй способ - добавить заголовочный файл Library.h в список заголовочных файлов проекта. Для этого откройте проект в Visual Studio и перейдите в окно Solution Explorer. Щелкните правой кнопкой мыши проект и выберите пункт Properties. Выберите вкладку VC++ Directories. В поле Include Directories добавьте путь к папке, в которой находится файл Library.h.
Третий способ - добавить заголовочный файл Library.h в список зависимостей библиотеки. Для этого откройте проект библиотеки в Visual Studio и перейдите в окно Solution Explorer. Щелкните правой кнопкой мыши библиотеку и выберите пункт Properties. Выберите вкладку Dependencies. В поле Additional Dependencies добавьте имя заголовочного файла Library.h.
После того, как вы добавите заголовочный файл Library.h в проект, который использует библиотеку, ошибки LNK2019 и LNK1120 должны исчезнуть.
В вашем случае я рекомендую добавить заголовочный файл Library.h в папку Header Files проекта. Это самый простой способ исправить проблему.
Вот как это сделать:
1. Откройте проект в Visual Studio.
2. Перейдите в окно Solution Explorer.
3. Щелкните правой кнопкой мыши папку Header Files и выберите пункт Add > Existing Item.
4. Выберите файл Library.h и нажмите кнопку Open.
После этого ошибки LNK2019 и LNK1120 должны исчезнуть.
Объяснение: