【问题标题】:Is there a way to reference a c++ project from a c# project in the same solution?有没有办法从同一解决方案中的 c# 项目中引用 c++ 项目?
【发布时间】:2023-04-09 07:48:01
【问题描述】:

在我的解决方案中,我们有 c# 项目,控制一些 GUI 和网络工作,以及 c++ 项目,管理一些硬件交互。在我的 c# 项目中,我有正确的 PInvokes 并且能够毫无问题地使用 c++ 输出 dll,但为了做到这一点,我必须手动将输出 dll 复制到构建目录或创建管理副本的构建脚本。

我对这种方法的问题是,该解决方案实际上有很多项目,目前大约有 150 个,涵盖 c++、c、c# 和 vb.net。我们一直在创建和删除项目,管理复制脚本正成为一大难题。特别是因为并非所有项目都相互依赖,我们有大约 20 种不同的构建配置。

是否可以简单地让 c# 项目引用 c++ 项目并自动复制项目输出,就像它与其他托管项目一样,而不使用构建后脚本?

【问题讨论】:

    标签: c# visual-studio visual-c++


    【解决方案1】:

    嗯,我这样做并且一直这样做的方式显然是使用 Visual Studio,并且假设这个 C++ 项目是 VS 项目,您可以轻松地创建一个包含多个项目的 VS 解决方案,您可以使用“解决方案文件夹”来组织这些项目。解决方案中项目的组织实际上取决于您希望如何组织它。它类似于具有嵌套文件夹的文件系统。不用说,您可以托管不同语言的项目,例如 C++、C#、VB……我不太确定您是否可以包含 C 项目,这超出了我的专业知识。

    请参阅下面我创建的解决方案的屏幕截图,以证明这一点...

    请注意,“Business”有一个嵌套的解决方案文件夹 (Utils),其中包含一个 C++ 项目 (ERM.CPPPibraries) 和一个 VB 项目 (ERM.VBLibraries)。然后,如果您在解决方案中引用项目(右键单击 -> 添加引用),则无需在每次编译解决方案(或项目)时复制输出程序集 VS 足够聪明,可以解决所有依赖项,解决它们并更新它们。

    希望能给你一个思路

    根据评论编辑

    简单来说...不,在 VS 解决方案中无法从托管项目中引用非托管项目。您可以引用 DLL,但不能引用项目本身

    【讨论】:

    • 这并不能完全解决它。问题是我无法从托管项目中引用本机项目......即使它们是相同的解决方案。
    • 好的,因为您在问题中标记了 VS,所以我假设它都是托管代码。如果是这种情况,那么就像这里所说的那样涉及更多...stackoverflow.com/questions/5107694/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 2021-12-09
    • 2016-01-03
    相关资源
    最近更新 更多