Visual Studio 2019 проблема со статическими проектами библиотеки - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь построить проект, состоящий из консольного приложения 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

1 Ответ

0 голосов
/ 22 июня 2019

Нашел проблему.Я добавил ссылку, щелкнув правой кнопкой мыши на консольном проекте, а затем «Построить зависимости» -> «Проектные зависимости».Это не сработало, но сработало, если я добавляю ссылки правой кнопкой мыши, а затем «Добавить ссылку»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...