从C#访问C++.lib库
本文关键字:lib C++ 访问 | 更新日期: 2023-09-27 17:55:04
我有一个c++库文件(.lib(。如何从c#访问其中的函数?我已经读到,我可以将库文件包装在一个c++dll中,并以这种方式公开函数。这是唯一的办法吗?我不是代码的所有者,所以我的选择是有限的。
使用C++/CLI程序集包装C++库。
C++/CLI允许您混合使用托管代码和非托管代码,充当C#和本机C++之间的桥梁。它实际上非常简单,也相对容易做到,尽管如果有很多类/函数要包装,它可能会变得乏味。
这里有一个例子。
您不能直接访问c++库文件(.lib(。最好的方法是在非托管代码周围使用非托管包装器。参考DllImportAttribute
。
MSDN帮助文档中有一个很好的例子:
using System;
using System.Runtime.InteropServices;
class Example
{
// Use DllImport to import the Win32 MessageBox function.
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
static void Main()
{
// Call the MessageBox function using platform invoke.
MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
}
}
另请注意:您可以在c++库周围使用托管c++包装器,但最好用非托管c++代码编写包装器。