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 的方法返回元组