我有pdflib_py.so库我想从haskell打电话。我没有头文件。正如您所看到的,lib的名称不是标准的libbla形式。
如何从haskell访问它?
我按照c2hs教程。但它需要一个头文件(我没有),而ghc要求库名称为libbla格式。我当然可以将pdflib_py.so重命名为libpdfpy.so,实际上我尝试了它(它没有用),但是假设你因为它的名字而无法从haskell访问一个库,这是愚蠢的。我肯定在这里遗漏了一些东西。
您可以从此处http://www.pdflib.com/download/pdflib-family/pdflib-8/
下载pdflib库他们有c ++,java,php,python等的包。
为什么我不使用c ++库而是使用python库?好吧,c ++库libbpdf.a需要用g ++编译。并且haskell不能与g ++一起使用,我必须首先编写一个C包装器。幸运的是有人已经为我做了。这就是pdflib_py.so - 一个关于libpdf库的包装器。
那么,我如何使用非标准名称的库和haskell没有头文件?
答案 0 :(得分:4)
我不认为你的方法是正确的。您应该将带有g ++的pdflib编译到共享库中,然后链接它。他们提供的C ++库已经使用了“extern C”包装器,因此导出的符号会像你期望的那样令人兴奋。
总之,我提出以下解决方案: