php调用c语言dll文件路径|如何在PHP中调用自己编写的DLL库中的函数接口

|

❶ PHP可否调用动态链接库

当php.ini中的enable_dl选项为on时,可以使用下面这个函数来加载dll文件:int dl ( string library ),但是当系统处于安全模式时,即使enable_dl为on,也无法使用.<?php// Example loading an extension based on OSif (!extension_loaded('sqlite')) { if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { dl('php_sqlite.dll'); } else { dl('sqlite.so'); }}// Or, the PHP_SHLIB_SUFFIX constant is available as of PHP 4.3.0if (!extension_loaded('sqlite')) { $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : ''; dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);}?> 这属于动态加载dll文件,还有一种方法就是,将你的dll文件放到php的ext目录下,然后在你的php.ini文件里面找到一大堆:extension=php_xxxx.dll那里,找个空行,按照这个写法写上去,注意前面不要有";"号.重启apache后,就可以调用里面的东西了.

❷ php调用dll文件里面的函数

1、首先从www.php.net网站上下载php源码,此处以php-5.2.17版本为例,下载后解压至E:盘根目录下(目录可以自己随意定)。2、下载安装VC++ 6.0,因为PHP源码是利用6.0版本写的,所以使用这个版本编译不会出现意外,别的版本未测试。3、把VC++ 6.0安装目录中的 Microsoft Visual Studio\Common\MSDev98\Bin 绝对路径添加到系统环境变量中。4、进入E:\php-5.2.17\ext目录,复制skeleton文件夹,并重命名为要开发扩展的名字,本例为“myfun”。5、重命名skeleton.c为myfun.c,skeleton.dsp为myfun.dsp6、编辑myfun目录中的php_skeleton.h、myfun.c、myfun.dsp这三个文件,替换内容中所有extname为myfun,EXTNAME为MYFUN。(一定要严格区分大小写)下面就进入到编码阶段:7、打开php_skeleton.h文件(头文件),找到PHP_FUNCTION(confirm_myfun_compiled);,在 PHP_FUNCTION(confirm_myfun_compiled);,下面编写PHP_FUNCTION(mb_MessageBox);,声 明一个mb_MessageBox函数,此函数的作用仅是输出js弹出一个alert消息框,用于测试。8、下面定义函数入口,打开myfun.c文件,找到PHP_FE(confirm_myfun_compiled,NULL) ;,在下面编写 PHP_FE(mb_MessageBox,NULL),此处注意一下,PHP_FE是定义的一个宏,所以后面不用加引号。9、在myfun.c最后面编写函数的实体部分:PHP_FUNCTION(mb_MessageBox){ char *arg = NULL; int arg_len, len; char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { return; } len = spprintf(&strg, 0, "<script>alert('%s')</script>",arg); //此处正是输入的js代码 RETURN_STRINGL(strg, len, 0);}到这代码书写就完成了,下面开始编译:10、开始->运行,输入CMD,打开命令行窗口。11、进入myfun的目录,输入 msdev myfun.dsp /MAKE "myfun – Win32 Release_TS",回车编译。12、如果没有错误,在E:\php-5.2.17下会生成一个Release_TS文件夹,在里面就可以找到php_myfun.dll文件。至此扩展dll开发完成,下面在php中进行测试:13、把php_myfun.dll复制到原php目录中的ext文件夹内。14、打开php.ini文件,添加当前dll的扩展 extension=php_myfun.dll15、重启apache,在网站目录下新建一文件,输入以下内容:<?phpecho mb_MessageBox("测试PHP扩展DLL by 马犇");?>浏览即可看到效果

❸ PHP如何调用.dll文件呀

如果你确定你的扩展*.dll能在php正确使用的话,首先需要把这个.dll文件复制到php的安装目录\ext文件夹下,然后修改php.ini文件,在;;;;;;;;;;;;;;;;;;;;;;;DynamicExtensions;;;;;;;;;;;;;;;;;;;;;;;配置节上,按照格式extension=a.dll添加该dll文件的引用,然后重新启动承载php的web服务器即可。

❹ 如何在PHP中调用自己编写的DLL库中的函数接口

在 DLL工程中的 cpp中函数定义如下:extern "C" _declspec (dllexport )int fun(int a, char b){return a + b;}第一种方法 隐式调用:调用的 DLL的主工程的 文件中代码如下:// 先把 lib 链接进来#pragma comment (lib , "..//Debug//FuncDll.lib" )// 外部声明的 add 函数extern "C" _declspec (dllimport )int fun(int a, char b);int TestDll(){// 直接调用 fun函数printf("%d/n" , fun(5, 2));return 0;}第二种方法 显式调用:调用的 DLL的主工程的 文件中代码如下:int TestDLL(){HMODULE hMole = NULL;typedef int (*Func)(int a, int b);// 动态加载 DLL 文件hMole = LoadLibrary(_TEXT("..//Debug//FuncDll.dll" ));// 获取 fun函数地址Func fAdd = (Func)GetProcAddress(hMole, "fun" );// 使用函数指针printf("%d/n" , fAdd(3, 1));// 释放指针FreeLibrary(hMole);return 0;}


赞 (0)