静态库项目的Visual Studio 2019问题

时间:2019-06-22 11:23:04

标签: visual-studio visual-c++

我正在尝试构建一个由c ++控制台应用程序和c ++静态库组成的项目。我只是为两者创建一个默认项目。 Visual Studio创建一个默认的示例函数。我还在头文件中包含了该函数,以便将其导出。然后,从控制台项目中添加对库项目的引用。然后,我尝试构建该项目,但它失败,表明在库中对该函数存在未定义的引用。但是,如果我将生成的.lib文件包含在控制台项目中,它将起作用。我已经在Visual Studio中使用过数千次静态库,但不知道现在发生了什么。

我正在使用Visual Studio社区:

Microsoft Visual Studio社区2019 版本16.1.3 VisualStudio.16。发行版/16.1.3+29009.5 Microsoft .NET Framework 版本4.7.03190

安装版本:社区

Visual C ++ 2019年00435-60000-00000-AA098 Microsoft Visual C ++ 2019

Visual Studio软件包9.1.00429.1的Application Insights工具 Visual Studio的Application Insights工具

ASP.NET和Web工具2019 16.1.429.50124 ASP.NET和Web工具2019

Azure App服务工具v3.0.0 16.1.429.50124 Azure应用服务工具v3.0.0

C#工具3.1.1-beta4-19281-06 + 58a4b1e79aea28115e66b06f850c83a3f1fcb6d3 IDE中使用的C#组件。根据您的项目类型和设置,可以使用不同版本的编译器。

通用Azure工具1.10 提供由Azure移动服务和Microsoft Azure工具使用的通用服务。

Cookiecutter 16.1.19129.1 提供用于查找,实例化和自定义cookiecutter格式模板的工具。

Microsoft Azure工具2.9 适用于Microsoft Visual Studio 0x10的Microsoft Azure工具-v2.9.20419.2

Microsoft JVM调试器1.0 提供将Visual Studio调试器连接到兼容JDWP的Java虚拟机的支持

基于Microsoft MI的调试器1.0 提供将Visual Studio连接到与MI兼容的调试器的支持

Microsoft Visual C ++向导1.0 Microsoft Visual C ++向导

Microsoft Visual Studio VC软件包1.0 Microsoft Visual Studio VC程序包

NuGet软件包管理器5.1.0 Visual Studio中的NuGet程序包管理器。有关NuGet的更多信息,请访问https://docs.nuget.org/

ProjectServicesPackage扩展1.0 ProjectServicesPackage Visual Studio扩展详细信息

Python 16.1.19129.1 为Python开发人员提供IntelliSense,项目,模板,调试,交互式窗口以及其他支持。

Python-Conda支持16.1.19129.1 Conda支持Python项目。

Python-Django支持16.1.19129.1 提供Django Web框架的模板和集成。

Python-IronPython支持16.1.19129.1 为基于IronPython的项目提供模板和集成。

Python-分析支持16.1.19129.1 对Python项目进行性能分析支持。

Python-VC项目支持16.1.19129.1 提供对在启用Python调试的情况下启动C ++项目的支持。

ResourcePackage扩展1.0 ResourcePackage Visual Studio扩展详细信息

Boost.Test 1.0的测试适配器 通过为Boost.Test编写的单元测试来启用Visual Studio的测试工具。扩展安装目录中提供了使用条款和第三方声明。

用于Google Test 1.0的测试适配器 使用为Google Test编写的单元测试来启用Visual Studio的测试工具。扩展安装目录中提供了使用条款和第三方声明。

TypeScript工具16.0.10506.2004 用于Microsoft Visual Studio的TypeScript工具

Visual Basic工具3.1.1-beta4-19281-06 + 58a4b1e79aea28115e66b06f850c83a3f1fcb6d3 IDE中使用的Visual Basic组件。根据您的项目类型和设置,可以使用不同版本的编译器。

用于Linux开发1.0.9.28917的Visual C ++ 用于Linux开发的Visual C ++

Visual Studio代码调试适配器主机程序包1.0 用于在Visual Studio中托管Visual Studio Code调试适配器的Interop层

用于CMake 1.0的Visual Studio工具 用于CMake的Visual Studio工具

用于CMake 1.0的Visual Studio工具 用于CMake的Visual Studio工具

控制台应用程序

#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:在函数_main中引用的未解析的外部符号“ void __cdecl fnStaticLibTest(void)”(?fnStaticLibTest @@ YAXXZ)

1 个答案:

答案 0 :(得分:0)

发现了问题。我在控制台项目上添加了单击右键的参考,然后单击“构建依赖项”->“项目依赖项”。那没有用,但是如果我在引用上单击鼠标右键,然后“添加引用”,则可以使用