这是我第一次使用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);
}
}
您不应该引用dll 文件。您参考项目。我建议:
添加
A_Cpp.dll' to
UsingCppDllProject`(添加现有文件...)。打开文件的属性并选择
这应确保文件被复制到
UsingCppDllProject
的输出目录
然后将 项目引用 从您的 exe 项目添加到
UsingCppDllProject
。这应该确保 A_Cpp.dll
被复制到 exe 的输出文件夹中。