【问题标题】:Visual Studio 2017 cannot build with a libraryVisual Studio 2017 无法使用库构建
【发布时间】: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++ 菜单中。

【问题讨论】:

    标签: c++ visual-studio dll visual-studio-2017


    【解决方案1】:

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

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

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

    【讨论】:

    • 哇,这是一个愚蠢的错误。如果我自己这么说的话,对初学者不太友好。
    • 编译器应该警告你。如果没有,您可能希望将其报告为错误。
    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2018-05-25
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多