c++ - Visual C++ 项目参考的新手帮助
问题描述
我对 C++ 几乎一无所知,只是我缺少获取别人的 C++ 库并将其包装以供 C# 使用。我发现了一些关于如何做到这一点的帖子,我正在一点一点地去那里。但我在这一点上碰壁了。
根据这篇文章,我应该创建一个新的托管 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++ 进行一些范式转变;似乎正在重建代码,就好像引用的项目的源文件在我的项目文件夹中一样。
让这个工作的秘密开关是什么?
解决方案
您应该将其添加../OtherLibrary/drm/adept/src
为项目查找头文件的位置之一(在 C++/General/Additional Include 目录中)。
您应该更改#include "../OtherLibrary/drm/adept/src/adept_provider.h"
为#include "adept_provider.h"
.
发生的事情是编译器正在寻找dp_all.h
相对于您的项目而不是其他项目。在 C++ 中编译不是完全独立的,头文件在项目之间共享,并在使用它们的每个项目中重新编译。
推荐阅读
- angular - 从 Angular 应用程序访问 YouTube API 时,gapi.client.youtube 未定义
- reactjs - 反应网格布局错误:
未安装在 DragStart 上 - python - 在长字符串中搜索关键字后的数字
- flutter - 标记未在谷歌地图上显示
- authentication - 为同一个 kuzzle 帐户处理多个 oauth 策略
- php - 当我在单个 AWS 实例中运行两个 Wordpress 站点时,网站无法加载
- java - 如何使用流 API 从 java 中的对象列表中删除重复项
- mysql - 带顺序的数据库模式设计
- sql - 错误:“。”处或附近的语法错误 第 4 行:在 like.takerId = frame.likeId 上;
- nginx - 如何在 nginx 上禁用 sni?