perl嵌入c语言原理为使用c外部过程,使用xs语言来扩展和编译模块,然后调用,步骤如下

#h2xs -A -n myperl  /* 创建一个名叫myperl的工程 */

编辑其中的myperl.xs 如

#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "ppport.h"

MODULE = myperl        PACKAGE = myperl       

void
is_connect()
    CODE:
        if(mysql_connect()==0)
        {
            printf("connect ok\n");
        }
       
        else
        {
            printf("connect failed\n");
        }


#perl Makefile.PL    /* 需要调用c共享库的,在LIBS中指定,本例指定为-lmysql,后续需要编译libmysql.so并放在正确位置 */
#make
#make install

然后perl就可以调用myperl模块,如

#!/usr/bin/perl -w

use ExtUtils::testlib;
use myperl;
myperl::is_connect();


编辑libmysql.c

#include
#include

int mysql_connect()
{
    MYSQL mysql;

    mysql_init(&mysql);
    if(mysql_real_connect(&mysql,"localhost","test","test","test",0,NULL,0))
        return 0;
    return 1;
}

#cc -o libmysql.so -shared -fPIC libmysql.c -lmysqlclient

cp到/usr/lib下然后ldconfig即可
12-20 15:48