如何在另一个项目中使用C#类库时自动引用C++ DLL?

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

这是我第一次使用C++ dll。 我创建了一个使用 C++ dll 的 C# 类库项目。 谷歌搜索后,我使用“DllImport”移植了cpp dll

我构建了项目并确认“UsingCppDllProject.dll”和“A_Cpp.dll”文件已复制到“UsingCppDllProject in\Release”文件夹中。

这是我的问题。

我需要在另一个项目文件中使用“UsingCppDllProject.dll”。 我引用了“UsingCppDllProject in\Release”文件夹中的“UsingCppDllProject.dll”。 但是,无法引用“A_Cpp.dll”。 怎么解决?

---------------------这是我尝试过的:---------------------------------

我已经完成了C++ DLL的移植以供使用。我的C++ DLL放置在 “UsingCppDllProject\UsingCppDllProject\Ref_Cpp”。因此,我将 dllName 设置为“Ref_Cpp//A_Cpp.dll”。

namespace UsingCppDllProject
{
    public class MyPortingClass
    {
        private const string dllName = "Ref_Cpp//A_Cpp.dll";

        public MyPortingClass()
        {

        }

        public int Do_AddFunction(int num1, int num2)
        {
            return AddNumber(num1, num2);
        }

        #region Porting
        [DllImport(dllName)]
        private static extern int AddNumber(int firstNum, int secondNum);
        #endregion
    }
}

我创建了一个新项目。 然后,我引用了“UsingCppDllProject.dll”。 当我运行该程序时,出现异常,提示找不到“A_Cpp.dll”。 我该如何解决这个问题?

我认为最简单的方法是直接将“A_Cpp.dll”文件放在与新项目的“.exe”文件相同的位置。 但每次创建新项目时都重复这个任务似乎很奇怪。

public class UserClass
    {
        private MyPortingClass tempClass;

        public UserClass()
        {
             tempClass = new MyPortingClass();
        }
        public void DoingAdd()
        {
            tempClass.Do_AddFunction(100, 400);
        }

    }
c# c++ import porting
1个回答
0
投票

您不应该引用dll 文件。您参考项目。我建议:

添加

A_Cpp.dll' to 
UsingCppDllProject`(添加现有文件...)。打开文件的属性并选择

  1. 构建操作:“无”
  2. 复制到输出目录:“如果较新则复制”

这应确保文件被复制到

UsingCppDllProject

的输出目录

然后将 项目引用 从您的 exe 项目添加到

UsingCppDllProject
。这应该确保
A_Cpp.dll
被复制到 exe 的输出文件夹中。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.