我有一个原生的C ++库(静态,即.lib目标)。我希望在我的C#项目中使用此文件中的一些函数。对于dll,我可以对它们进行调整。我如何为静态库执行此操作?
我读了this question并且大卫的答案说你只能为dll而不是libs进行pinvoke。
答案 0 :(得分:3)
通过将静态库链接到更大的模块来使用静态库。在Windows中,表示DLL或可执行文件。
它们并不孤立,只有在将它们链接到更大的模块时才有意义。因此,这意味着,为了使用pinvoke,您需要构建一个包含该库的DLL,并对该DLL进行pinvoke。
作为pinvoke的替代方案,您可以进行混合模式C ++ / CLI程序集。将静态库链接到该C ++ / CLI程序集,并通过C ++托管类公开该功能。然后,您的C#代码可以使用该托管类。