我能使用用C++编写的DLL文件在我的C#项目中吗?

3
问题是——我想在C++中编写一个模板类,将其放入DLL中,并从我的C#项目中调用它。这种做法是否可行?你能否提供任何关于如何实现它的参考或文章吗? 编辑 我希望DLL是用非托管C++编写的。
5个回答

6

模板类无法导出。除非有人实例化它,否则它不存在。您应该显式地实例化它,然后像通常的类一样导出它。


1

你可以像创建其他DLL一样创建它 - DLL的主要思想是它可以用任何编程语言创建,并且可以与其他语言一起使用。只需记住C++是非托管的,因此必须小心处理。例如在这里(MSDN论坛)查找。

另一个链接。

通常,使用DllImport修饰符从在C++中创建的DLL文件中导入函数。以下是来自MSDN的示例:

using System.Runtime.InteropServices; // DllImport
public class Win32 {
  [DllImport("User32.Dll")]
  public static extern void SetWindowText(int h, String s);
}

+1这个链接包含了所有需要的信息,但是你还应该添加一些使用DllImport的代码片段。 - user447688

1

1
通过使用C++/CLI,您可以将C++类公开为.NET类,并在其中使用兼容功能。但是,您将无法公开模板定义,但可以使用专门化该模板的具体类。
构建C++/CLI类时,您可以像引用任何其他.NET程序集那样引用它。

0
据我所记,这里有一个小问题。 C#可以使用C++ Dll(托管和非托管)。 非托管的C++可以使用C# Dll(需要通过COM和接口来实现)。
我会看看是否能找到更详细的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接