在Visual c++项目中工作的DLL可以在Visual c#项目中使用吗?
Can a DLL that works on Visual C++ project be used in a Visual C# project?
我有一个可以在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());
}
}
你可以做更多的事情,这只是一个非常简单的例子。
相关文章:
- 将QT项目导入Visual Studio 2019会给我带来很多LNK2001错误
- 如何将 CLion C++ 项目导入 Visual Studio?
- Visual Studio 中的 CMake 项目:如何添加其他包含和库目录?
- 在Visual Studio C++项目中包含源库的正确方法是什么?
- MS Visual Studio 解决方案结合了非托管C++项目和 C# 项目
- 智能感知不适用于Visual Studio 2017中的cmake项目
- 我可以在Visual Studio 2019上的项目下使用多个主函数吗?
- 如何在不需要LIBCD.lib的情况下在Visual Studio 6中编译C项目
- Visual Studio C++ 项目和引用项目的引用
- 为什么在Visual Studio的OpenCV项目中使用/MT时仍然需要dll?
- 如何在我的 Visual C++ 项目中使用 .a 文件
- 无法使用"generate_vcxproj.bat"生成 GDAL Visual Studio 项目
- Visual Studio 如何在内核模式驱动程序项目中使用C++标准库?
- Visual Studio 中静态库项目之间的未解析外部
- Qt - 为什么Visual Studio 2019在qml资源中添加10Mb文件后无法再编译我的项目?
- 在 Visual Studio 的同一项目中创建多个C++文件
- 如何手动将库添加到Visual Studio 2017项目?
- 在 Visual Studio 中的 1 个项目中编译单个 C++ 源文件
- 如何在 win32 中使用 ActiveX dll C++项目 Visual Studio 2010
- 如何将扩展链接到项目(Visual Studio c++)