perl程序中如何加载C/C++生成的动态库呢? 求大神详细解释!!
1个回答
展开全部
写在没法详解, 那可是几本书的内容. 不过可以给你一个折衷的办法, 你可以用上 Inline::C 或 Inline::CPP. 不过 Inline::CPP 要靠点运气, 自己的经验中这不是很稳定.
use Inline C =>Config=> LIBS =>'-L/<yourlibpath> -l<yourlib>'; # 或 use Inline CPP
$x = library_function ($integer_arg,$string_arg);
如果这帮不到你, 你就得深入不毛了...
perldoc h2xs
perldoc perlxs
perldoc perlxstut
如果你看完没有口吐白沫, 那恭喜你! 不过要做得出来, 那是另一次的地心探险
我想除了那些发展 perl 内核的人, 这是没人会想接触的东西.
心底里想说的是, 你不如乾脆用 c++ 将整个程序写好, 然後 pipe 过去吧!
use Inline C =>Config=> LIBS =>'-L/<yourlibpath> -l<yourlib>'; # 或 use Inline CPP
$x = library_function ($integer_arg,$string_arg);
如果这帮不到你, 你就得深入不毛了...
perldoc h2xs
perldoc perlxs
perldoc perlxstut
如果你看完没有口吐白沫, 那恭喜你! 不过要做得出来, 那是另一次的地心探险
我想除了那些发展 perl 内核的人, 这是没人会想接触的东西.
心底里想说的是, 你不如乾脆用 c++ 将整个程序写好, 然後 pipe 过去吧!
追问
谢谢,其实我也想直接C++写完,不过任务要求用perl加载动态库 所以想了解下,看样子似乎很不好做
追答
我以前也试过, 是因为已没有 c 的 source, 所以用了, Inline::C 来导入, 那还可以; 但如果是动态的 (即 dll) , 那我用 Inline::CPP 就有几个 function 无声无息就是用不到了. 但我觉得一个正正常常的程序员来说, 这大概已是极限了...
再追加一个方案, 你或者可以试试先将你的 lib 丢到 system32里, 再用 Win32::OLE 来导入. 但详细我也不大清楚是否行得通. 但肯定是多了一层壳, 要慢一点了. 最後只能祝你顺利了~ =)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询