Я пытаюсь построить проект, состоящий из консольного приложения c ++ и статической библиотеки c ++. Я просто создаю проект по умолчанию для обоих. Visual Studio создает пример функции по умолчанию. Я включаю эту функцию также в заголовочный файл, чтобы она экспортировалась. Затем я добавляю ссылку на проект библиотеки из консольного проекта. Затем я пытаюсь построить проект, и он не может сказать, что в библиотеке есть неопределенная ссылка на функцию. Но если я включу сгенерированный файл .lib в консольный проект, он будет работать Я использовал статические библиотеки в Visual Studio тысячи раз, но понятия не имею, что происходит сейчас.
Я использую сообщество Visual Studio:
Сообщество Microsoft Visual Studio 2019
Версия 16.1.3
VisualStudio.16.Release / 16.1.3 + 29009,5
Microsoft .NET Framework
Версия 4.7.03190
Установленная версия: Сообщество
Visual C ++ 2019 00435-60000-00000-AA098
Microsoft Visual C ++ 2019
Инструменты Application Insights для пакета Visual Studio 9.1.00429.1
Инструменты Application Insights для Visual Studio
ASP.NET и веб-инструменты 2019 16.1.429.50124
ASP.NET и веб-инструменты 2019
Сервисные инструменты приложения Azure v3.0.0 16.1.429.50124
Сервисные инструменты приложения Azure v3.0.0
C # Tools 3.1.1-beta4-19281-06 + 58a4b1e79aea28115e66b06f850c83a3f1fcb6d3
Компоненты C #, используемые в IDE. В зависимости от типа вашего проекта и настроек может использоваться другая версия компилятора.
Общие инструменты Azure 1.10
Предоставляет общие службы для использования мобильными службами Azure и Microsoft Azure Tools.
Cookiecutter 16.1.19129.1
Предоставляет инструменты для поиска, создания и настройки шаблонов в формате cookiecutter.
Microsoft Azure Tools 2.9.
Инструменты Microsoft Azure для Microsoft Visual Studio 0x10 - v2.9.20419.2
Microsoft JVM Debugger 1.0
Обеспечивает поддержку подключения отладчика Visual Studio к JDWP-совместимым виртуальным машинам Java
Microsoft MI на основе отладчика 1.0
Обеспечивает поддержку подключения Visual Studio к MI-совместимым отладчикам
Microsoft Visual C ++ Wizards 1.0
Мастера Microsoft Visual C ++
Пакет Microsoft Visual Studio VC 1.0
Пакет Microsoft Visual Studio VC
NuGet Package Manager 5.1.0
Диспетчер пакетов NuGet в Visual Studio. Для получения дополнительной информации о NuGet, посетите https://docs.nuget.org/
ProjectServicesPackage Extension 1.0
ProjectServicesPackage Расширение Visual Studio Подробная информация
Python 16.1.19129.1
Предоставляет IntelliSense, проекты, шаблоны, отладку, интерактивные окна и другую поддержку для разработчиков Python.
Python - поддержка Conda 16.1.19129.1
Поддержка Conda для проектов Python.
Python - поддержка Django 16.1.19129.1
Предоставляет шаблоны и интеграцию для веб-инфраструктуры Django.
Python - поддержка IronPython 16.1.19129.1
Предоставляет шаблоны и интеграцию для проектов на основе IronPython.
Python - Поддержка профилирования 16.1.19129.1
Поддержка профилирования для проектов Python.
Python - поддержка проекта VC 16.1.19129.1
Обеспечивает поддержку запуска проектов C ++ с включенной отладкой Python.
ResourcePackage Extension 1.0
ResourcePackage Visual Studio Расширение Подробная информация
Тестовый адаптер для Boost.Test 1.0
Включает средства тестирования Visual Studio с модульными тестами, написанными для Boost.Test. Условия использования и уведомления третьих сторон доступны в каталоге установки расширения.
Тестовый адаптер для Google Test 1.0
Включает средства тестирования Visual Studio с модульными тестами, написанными для Google Test. Условия использования и уведомления третьих сторон доступны в каталоге установки расширения.
Инструменты TypeScript 16.0.10506.2004
Инструменты TypeScript для Microsoft Visual Studio
Инструменты Visual Basic 3.1.1-бета4-19281-06 + 58a4b1e79aea28115e66b06f850c83a3f1fcb6d3Компоненты Visual Basic, используемые в IDE. В зависимости от типа вашего проекта и настроек может использоваться другая версия компилятора.
Visual C ++ для разработки Linux 1.0.9.28917
Visual C ++ для разработки Linux
Хост-пакет адаптера отладки кода Visual Studio 1.0
Уровень взаимодействия для размещения адаптеров отладки кода Visual Studio в Visual Studio
Инструменты Visual Studio для CMake 1.0
Инструменты Visual Studio для CMake
Инструменты Visual Studio для CMake 1.0
Инструменты Visual Studio для CMake
консольное приложение
#include <iostream>
#include "StaticLibTest\\framework.h"
int main()
{
std::cout << "Hello World!\n";
fnStaticLibTest();
}
заголовок библиотеки
#pragma once
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
void fnStaticLibTest();
код библиотеки
#include "pch.h"
#include "framework.h"
// TODO: This is an example of a library function
void fnStaticLibTest()
{
}
1> ConsoleApplication1.obj: ошибка LNK2019: неразрешенный внешний символ «void __cdecl fnStaticLibTest (void)» (? FnStaticLibTest @@ YAXXZ), на который ссылается функция _main