在Visual c++项目中工作的DLL可以在Visual c#项目中使用吗?
本文关键字:项目 Visual DLL c++ 工作 | 更新日期: 2023-09-27 18:15:48
我有一个可以在Visual c++项目中使用的DLL,没有问题。当我在Visual c#项目中使用相同的DLL时,会出现问题。
对于Visual c++的情况,我所需要做的就是将dll与可执行文件放在同一个文件夹中。对于Visual c#项目,当我尝试时,我得到错误%1 is not a valid Win32 application.
然后我试图在Visual c#项目中添加dll作为参考,但失败了。收到的错误是The dll could not be added. Please make sure file is accessible and it is a valid assembly or COM component.
这是因为在Visual c++上工作的相同的dll不能在Visual c#项目中使用而不进行修改吗?
谢谢。我使用的是Visual studio 2012
可以,但是有一种特殊的方法。首先,DLL必须与你的可执行文件(c#汇编)在同一个目录中,或者至少在一个合适的DLL搜索路径中。然后,您需要使用P/Invoke定义要对DLL进行的每个调用(正如Alexei指出的那样)。这是微软提供的关于这个主题的教程。
假设你在c++ DLL中有一个函数,它提供了两个整数,将它们相加并返回结果。下面是一个调用c++ DLL中的函数的简短应用程序。
using System.Runtime.InteropServices;
...
public class Program
{
[DllImport("yourcppdll.dll")]
public static extern int AddNumbers(int n1, int n2);
static void Main(string[] args)
{
int result = AddNumbers(2, 2);
//result equals 4
Console.WriteLine("Result is " + result.ToString());
}
}
你可以做更多的事情,这只是一个非常简单的例子。