linux下perl inline C调用动态链接
linux下perl inline C调用动态链接
linux AS4.0 update4系统
perl V5.8.5built for i386-linux-thread-multi
perl InLine-0.44
perl脚本中实现对外部动态链接库函数的调用并返回值。使用定制的动态链接库my.so文件(/lib/my.so),使用my.h(/tmp/myTest.h),使用外部函数test并返回值.
perl源码test.pl如下:
#!/usr/bin/perl -w
use Inline (Config =>
DIRECTORY => '/tmp/test',
);
use Inline C => Config => LIBS => ' -lmy.so';
use Inline C => Config => INC => '-I/tmp/';
use Inline C => Config => AUTO_INCLUDE => '#include "myTest.h"';
use Inline C => Config => ENABLE => AUTOWRAP;
use Inline C => <<'END_C';
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void greet() {
char * ret;
ret=test(1,'ABC');
printf("test VerifyCert is ok!ret == %s\n",ret);
}
END_C
greet;
myTest.h文件源码:
#ifndef MYTEST_H
#define MYTEST_H
#define USRNAME_LEN 200 //用户名最大长度
#define RETURNVAL_LEN 400 //返回值最大长度
#define FOPEN_FILE_ERR 'm' //打开文件失败
#ifdef __cplusplus
extern "C" {
#endif
extern char* TEST(int CertFlags,char* Cert);
#ifdef __cplusplus
}
#endif
#endif
执行test.pl时报错:
'/usr/bin/perl: symbol lookup error: /tmp/test/lib/auto/test_pl_ef8b/test_pl_ef8b.so: undefined symbol: test
不知是哪里出了问题,请大家帮忙看看。谢谢!