设为首页 加入收藏
首页 资讯 vxWorks VMEbus 硬件 开源系统 大杂烩 EBook BBS
我要投稿

TOP

如何在PHP中调用自己编写的DLL库中的函数接口?
2011-05-14 16:31:06 来源:www.vxdev.com 作者:frank 【 】 浏览:432次 评论:0

2010-8-13 11:04:33
Q:  如何在PHP中调用自己编写的DLL库中的函数接口?
A: 经过我昨晚一晚上的研究,windows上PHP中调用.dll中的函数的方式如下:
1. 如果是php系统提供扩展库.dll,这些dll中的函数可以直接调用函数即可;php提供很多的这种扩展dll文件,种类很多,类似windows提供的各种api差不多。可以动态下载dll;也可以在php.ini中加入,这样就会启动的时候就载入dll。
2. 如果是自己写dll文件,分几种情况:
 1 )如果是以COM方式写的,那么注册一下,也可以直接调用。
 2 )如果就是一般的自己以C写的普通的dll文件,那么就比较麻烦,有2种方式处理:
   a) 利用最新版本的PHP提供的php_w32api.dll提供的注册接口函数,将你自己的函数注册一下,然后就可以直接调用了。在php的程序调用运行过程中,先注册,然后再调用自己的函数即可。
    由于没有找php_w32api.dll(在PECL中)文件,还没有试验过。
    在最新的文档中见到这个的说明及例子,并且提示这个属于试验阶段,使用的风险自负。示例:
<?php

define("MB_OK", 0);

// Load the extension
dl("php_w32api.dll");

// Register the GetTickCount function from kernel32.dll
w32api_register_function("kernel32.dll",
                         "GetTickCount",
                         "long");

// Register the MessageBoxA function from User32.dll
w32api_register_function("User32.dll",
                         "MessageBoxA",
                         "long");

// Get uptime information
$ticks = GetTickCount();

// Convert it to a nicely displayable text
$secs  = floor($ticks / 1000);
$mins  = floor($secs / 60);
$hours = floor($mins / 60);

$str = sprintf("You have been using your computer for:" .
                "\r\n %d Milliseconds, or \r\n %d Seconds" .
                "or \r\n %d mins or\r\n %d hours %d mins.",
                $ticks,
                $secs,
                $mins,
                $hours,
                $mins - ($hours*60));

// Display a message box with only an OK button and the uptime text
MessageBoxA(NULL,
            $str,
            "Uptime Information",
            MB_OK);
?>

   b) 使用源代码编译方式,根据php提供的源码头文件,将自己的函数再套一层php的一些宏定义注册,然后编译成dll文件。其实这个方式跟上面的是类似的,也是把自己的函数在注册一下,使得php能够认识你自己的函数。这个相当于是静态的编译扩展库,上面的相当于是动态的。
    猜测unix/linux下的.so文件,也可以这样的方式去编译。


您看到此篇文章时的感受是:
Tags:php 调用 DLL 函数 责任编辑:frank
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇软件设计文档国家标准 下一篇如何在windows下获取网卡的MAC地..

评论

帐  号: 密码: (新用户注册)
表  情:
内  容:

相关栏目

最新文章

图片主题

热门文章

推荐文章

相关文章

广告位