Visual Studio 2017 无法使用库构建

Posted

技术标签:

【中文标题】Visual Studio 2017 无法使用库构建【英文标题】:Visual Studio 2017 cannot build with a library 【发布时间】:2017-04-27 01:52:09 【问题描述】:

所以我使用了一个名为 Milestone SDK 的库,并按照说明将这个基本库链接到我的程序中。了解图书馆本身并不重要,因为我只是想让图书馆工作。

我已将包含目录添加到 "C:\Program Files\Milestone\MIPSDK\Include"

我已将链接器添加到 "C:\Program Files\Milestone\MIPSDK\Lib\x64",

我已将 "ToolkitFactoryProvider.lib" 添加到其他依赖项中, 并且我已确保构建针对 x64 Debug 并将 ToolkitFactoryProvider.dll 包含到 exe 目录中。并编写了这个基本程序:

#include <set>
#include <iostream>
#include <Toolkits/ToolkitInterface.h>
#include <Toolkits/ToolkitFactoryProvider.h>
#include "stdafx.h"

using namespace std;
using namespace NmToolkit;

int main()
    ImToolkitFactory* p_fac;
    CmToolkitFactoryProvider provider;
    p_fac = provider.CreateInstance();

    if (p_fac == NULL) 
        return -1;
    
    provider.DeleteInstance(p_fac);
    return 0;

但是,当我构建时,VS2017 抛出: “NmToolkit 命名空间不存在” “ImToolkitFactory 未声明的标识符” “等等”

编辑器本身可以识别名称和类名,所以如果我按照大量教程添加库,我不明白我做错了什么。有什么帮助吗?图书馆本身有问题吗?我什至尝试将它添加到 VC++ 目录菜单和 C/C++ 菜单中。

【问题讨论】:

【参考方案1】:

问题可能是 stdafx.h 的包含语句。它应该是 .cpp 文件中的第一个包含语句。

如果您的项目使用预编译头文件,则此包含语句具有特殊含义:编译 .h 文件的内容,然后将编译器状态转储到 .pch 文件。然后,只要编译器看到这个包含语句,就会加载状态。

当您将所有常用的包含文件放在 stdafx.h 中时,这会加快大型项目的编译速度。副作用是编译器会忘记在预编译头包含语句之前看到的任何内容。

【讨论】:

哇,这是一个愚蠢的错误。如果我自己这么说的话,对初学者不太友好。 编译器应该警告你。如果没有,您可能希望将其报告为错误。

以上是关于Visual Studio 2017 无法使用库构建的主要内容,如果未能解决你的问题,请参考以下文章

win7安装visual studio 2017无法进入安装界面

使用 Visual Studio 2017 和 IIS Express 的 ngrok 无法连接

使用Visual Studio 2015,2017,CMake 3.10完全无法正常工作

无法从使用 Visual Studio 2017 和 C# 7.0 的方法返回元组

Visual Studio 2017 - 无法安装 WDK 扩展

无法从 Visual Studio 2017 调试和发布 Azure 函数