Visual C ++项目参考的新手帮助

时间:2018-09-05 09:48:53

标签: c++ c++-cli

我对C ++几乎一无所知,只不过我缺少将别人的C ++库打包并供C#使用的方法。我找到了一些有关如何执行此操作的帖子,而我正在一步一步地走到那里。但是我现在碰壁了。

根据this post,我应该创建一个新的托管C ++项目。我已经完成了此操作,并添加了对我应该包装的项目的引用。所以我的代码看起来像这样:

#include "stdafx.h"
#include "DrmWrapper.h"
#include "../OtherLibrary/drm/adept/src/adept_provider.h"

DrmWrapper::DrmWrapper(dpdrm::DRMProcessorClient * client, dpdev::Device * device)
{
    adept::DRMProviderImpl * provider = new adept::DRMProviderImpl();
    drm_processor_ = provider->createDRMProcessor(client, device);
}

unsigned DrmWrapper::initSignInWorkflow(unsigned workflows, const dp::String& authProvider, const dp::String& username,
    const dp::String& password)
{
    return drm_processor_->initSignInWorkflow(workflows, authProvider, username, password);
}

一切看起来不错。但是,当我尝试编译包装项目时,出现错误:

  

d:\ src \ drm-wrapper \ OtherLibrary \ drm \ adept \ src \ adept_provider.h(26):致命错误C1083:无法打开包含文件:'dp_all.h':没有此类文件或目录

嗯...什么?我不是在尝试编译adept库。本身已经很好地建立了。我只想编译自己的包装器项目。并且dp_all.h文件 存在,与adept_provider.h在同一文件夹中。

很明显,我没有从C#到C ++进行一些范式转换;好像正在重建代码,就像引用的项目的源文件在我的项目文件夹中一样。

要使它正常工作,秘密开关是什么?

1 个答案:

答案 0 :(得分:2)

您应该添加../OtherLibrary/drm/adept/src作为项目查找头文件的位置之一(在C ++ / General / Additional Include Directories中)。

您应将#include "../OtherLibrary/drm/adept/src/adept_provider.h"更改为#include "adept_provider.h"

正在发生的事情是,编译器正在寻找相对于您的项目而不是相对于其他项目的dp_all.h。在C ++中,编译不是完全分开的,头文件在项目之间共享,并在使用它们的每个项目中重新编译。