gpt4 book ai didi

c# - 如何将包含其他第三方 C 库的 C++ project_A 链接到另一个 project_B

转载 作者:行者123 更新时间:2023-11-28 05:40:33 24 4
gpt4 key购买 nike

我认为这是一个基本问题,但是我找不到关于这个主题的任何足够的帖子,或者我可能太愚蠢了正确搜索...

我在两个不同的解决方案中有两个项目。项目 A 是一个使用第三方库(如 ffmpeg( native C))的应用程序(.exe),而项目 B 是一个 DLL,它想要使用项目 A 的代码(目的:假设 C# 项目通过项目使用项目 A 的功能性B).从我的角度来看,我只需要添加项目 A 的包含路径以包含它的源文件并将链接器输入设置为项目 B .obj。但是,在编译 Project B 时,MSVS 找不到一个 ffmpeg Header 的头文件“libavutil/opt.h”:

#pragma once
extern "C"
{
#include <libavutil/opt.h>
#include <libavcodec/avcodec.h>
#include <libavutil/channel_layout.h>
#include <libavutil/common.h>
#include <libavutil/imgutils.h>
#include <libavutil/mathematics.h>
#include <libavutil/samplefmt.h>
}

fatal error C1083: Cannot open include file: 'libavutil/opt.h': No such file or directory.

我真的必须设置那些 ffmpeg 库的包含路径吗?如果这样做,我会收到许多 LNK2001、2005 和 2019 错误。有什么想法吗?

最佳答案

抱歉,无法为您的项目设置包含路径。也许,您可以帮助完成这项任务,但是,请查看 here .

您可能会考虑完全重新设计:如果项目 B 使用项目 A 的代码,您可能希望将所有代码移至项目 B,并让项目 A 也使用 DLL。如果您发现将 EXE 项目变成 DLL 比设置包含路径更容易,您可以切换 A 和 B 的角色,重命名它们并适本地更改它们的类型,并移动代码 not 保留在DLL 到项目 B,使用项目 A 作为 DLL。

编辑(回应您的评论):

  • 项目 DLL:
    接收将在 C++ exe 和 C# exe 之间共享的所有代码,包括与 ffmpeg 的链接等。
  • C++ EXE 项目:
    接收之前项目 A 的剩余部分。将利用项目 DLL(更准确地说:从那里输出的 DLL)再次获得之前直接合并的任何内容。
  • C# 项目 EXE:如你所愿。当然,托管代码和非托管代码之间的所有编码仍然存在(无论如何,您之前都必须这样做)。

关于c# - 如何将包含其他第三方 C 库的 C++ project_A 链接到另一个 project_B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37202650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com