新手帮助Visual C ++项目引用

问题描述 投票:0回答:1

我对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 ++的一些范式转变;好像代码正在重建,好像引用的项目的源文件在我的项目文件夹中。

让这个工作的秘诀是什么?

c++ c++-cli
1个回答
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 ++中并不是完全独立的,头文件在项目之间共享,并在每个使用它们的项目中重新编译。

© www.soinside.com 2019 - 2024. All rights reserved.