如何在C#项目中使用LIB文件?

Pab*_*blo 2 c# c++ static-libraries visual-studio-2010

有一个lib文件.h,它与一些设备驱动程序一起使用.Visual Studio C++项目示例使用该库作为静态链接.

从该库导出的函数只有2个.

HANDLE open_dev();
HANDLE open_file( char *filename );
Run Code Online (Sandbox Code Playgroud)

我想在我的C#项目中使用该库,并再次静态链接它.怎么可能?

wim*_*ica 5

您可以创建一个DLL,在其中为.lib中的每个函数创建包装函数:

extern "C" __declspec (dllexport) HANDLE OpenFile(char const * filename)
{
    return open_file(filename);
}
Run Code Online (Sandbox Code Playgroud)

在C#中,您使用P/Invoke使dll函数可用:

[DllImport("WrapperLib.dll")]
private static extern System.IntPtr OpenFile(string filename);
Run Code Online (Sandbox Code Playgroud)

  • 没关系,想通了我不得不在DllImport中使用`CallingConvention = CallingConvention.Cdecl` (2认同)