在.NET的* .a库中使用C函数

时间:2012-01-27 21:38:26

标签: c# .net c pinvoke wrapper

我有一个由标题(.h)和库(.a)文件组成的API。

我从未接触过C,我需要从C#访问此API并与其功能进行交互。

关于此主题的大多数questions说我需要执行类似[DllImport("insert_the_dll_name_here")]这样的操作来调用DLL方法。但我只有.h和.a文件。

我该怎么办?

我应该将这些文件编译到DLL中然后使用pInvoke吗?如果是这样,怎么样?

或者我应该写一个包装类?如果是这样的话?

感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

如果您的.a文件包含Windows格式的目标文件,那么您可以提取存档(使用cygwin ar工具)并将它们链接到C ++ / CLI项目中。 C ++ / CLI可以使用头文件,直接调用C函数,并创建C#可以像使用任何Microsoft提供的库类一样轻松使用的.NET类。

如果您的.a文件包含Linux格式的目标文件,则需要回复提供这些文件的人,并要求为Windows重新编译代码。