当前位置:首页 » 编程语言 » php编译dll

php编译dll

发布时间: 2023-08-19 10:42:40

‘壹’ 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.dsp
6、编辑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.dll
15、重启apache,在网站目录下新建一文件,输入以下内容:
<?php
echo mb_MessageBox("测试PHP扩展DLL by 马犇");
?>
浏览即可看到效果

‘贰’ windows下开发并编译PHP扩展的方法

现在就简单说一在WINDOWS下开发PHP扩展的步骤:
首先需要准备的软件有:
cygwin
安装路径e:\app\cygwin
visual
studio
C++
6.0,
修改环境变量,把已经安装好的PHP路径设置为环境变量。在这里,假设我的PHP安装目录是:e:\app\php5.2.5,那么我把WINDOWS环境变量后面加上这个安装目录。方便一会儿使用php.exe。
PHP源代码,这里假设为e:\c_source_code\php-5.2.5
1、修改文件
“PHP源文件目录/ext/ext_skel_win32.php”,在这里就是:E:\c_source_code\php-5.2.5\ext,其中主要是修改其中的cygwin路径。$cygwin_path
=
'e:\app\cygwin\bin';
把$cygwin_path修改为你实际安装cygwin的路径。
2、在源代码ext目录也就是e:\c_source_code\php-5.2.5\ext下,执行
php
ext_skel_win32.php
--extname=<EXT_NAME>,此时会在ext目录下生成<EXT_NAME>目录,这个目录就是我们将要进行PHP扩展开发的框架。比如你运行php.exe
ext_skel_win32.php
--extname=foo,会在ext目录下生成foo目录。
3、将php-root\dev\php5ts.lib拷贝至
“ext/<EXT_NAME>”中。比如你要开发的PHP扩展名为foo,那么就需要把php-root\dev\php5ts.lib拷贝到PHP源文件目录\ext\foo中。
4、修改foo.c内容,编写我们需要的C代码。
5、进入<EXT_NAME>目录,打开<EXT_NAME>.dsp。
设置VC6工程,
设置菜单“组建”->“移除工程配置”,选中“Win
32
Release_TS”,
设置菜单“工程”,选中“Win
32
Release_TS”
打开Tab“连接”,设置“输出文件名”中的目录,
[可选]打开Tab“C/C++”,增加“预处理器定义”“,COMPILE_DL_<EXT_NAME>”(注意全大写,默认加入的),取消预定义“LIBZEND_EXPORTS”(否则不可引入zend函数)。
6、设置好以后,进行编译,会生成一个dll文件,文件名是<EXT_NAME>.dll,比如在我们的例子中就为foo.dll
把foo.dll拷到e:\app\ext目录下,并在php.ini里加上一行extension=foo.dll,重启一下apache,查看phpinfo();,会发现我们的PHP扩展foo()已经加载进来,已经可以使用这个foo扩展了。

‘叁’ 怎样把PHP代码编译成DLL文件

在大型机数据集中每一行就代表一条记录
那么就可以不用分别读取,并且我还真的没有试过分别读取
先假定你的输入文件记录长度为80
你可以直接把输入文件定义为
FD FILE1
........
.
01 INPUT-REC PIC X(80).
这样读取进来
然后就可以通过
UNSTRING INPUT-REC
DELIMITED BY SPACE
INTO 变量。
这样来实现读取。
而第一行为了转化为数字,可用FUNCTION NUMVAL(变量)
这样把字符形式转化为数字
这样就可可以了
如果还不懂就问吧

补充:数据集长度的大小不确定
在大型机里面数据集是以记录为单位来存放的,一行就是一个记录
如果是定长,比如80,那么在FD 下INPUT-REC PIC X(80)
变长要复杂点
那么不管一行是多少,比如记录长度是80,格式是fb
那么第一行是9(5),就是存放的5个数字
比如 12345----------数字后面就是空格
其他行是X(6)那么
比如ABCDEG------------字符后面也是空格
我们把输入文件对应的记录定义为
INPUT-REC PIC X(80)
那么我们想要取得前面的东西就可以
UNSTRING INPUT-REC
DELIMITED BY SPACE
INTO 变量
要不你把题目描述具体些,写出来,我来把代码写一下

‘肆’ PHP文件是什么文件怎么打开

PHP是一种非常流行的WEB程序语言,超级文本预处理语言,其他的还有ASP,JSP等。简单的说.PHP就是嵌入这种语言后的一个动态网页文件。

四种打开php格式文件方法:

首先我们来看php文件是什么文件,PHP是一个网页脚本,文件后缀名为.php,

php文件打开方式一:用记事本打开

右击.php文件,选择记事本打开,就可以看到文件代码啦!

php文件打开方式二:用Dreamweaver打开

Dreamweaver是网页编辑器,比较流行的网站开发工具,你可以直接把文件拖进去就可以打开php文件了

php文件打开方式三:Notepad++工具打开

也是代码编辑器,选择文件打开就行

php文件打开方式四:SublimeText工具打开

和上面方法一样,直接选择文件打开就行

除了记事本,其它代码编辑器工具都可以去php中文网php开发工具下载

若是想要.php文件进行运行则需要php环境。可以去php中文网QQ群374224296里去下载php环境搭建工具软件(PHPToolClient)进行安装,直接把文件放进根目录下就可以用浏览器打开啦!

‘伍’ PHP如何用调用C#编写的DLL

1.创建一个 C# Class Library ,命名为:HelloWorld

2.打开项目的属性,在点选左边的 "Application"(就是第一个tab) , 然后点击Assembly Information 按钮 ,在弹出的Dialog中, 必须在底部勾上: Make assembly COM-visible !否则 , 这个dll将不能以COM方式访问 .( 也可以在代码中的类声明中写上[ComVisible(true)] , 效果一样,需要增加using System.Runtime.InteropServices;引用)

‘陆’ .PHP文件能不能封装成.DLL文件呢该用什么来封装,如何调用

PHP使用VB封装成DLL?没有试过。

不过,Zend Corporation (http://www.zend.net)
开发的产品 Zend Studio 可以装PHP进行编译,编译过的PHP运行速度比不编译的要快。而且,因为编译后生成的是二进制文件,所以,Zend Studio 也就达到了为PHP加密的功能(虽然国内已经有人开发了一种能对被Zend Studio某些版本编译过的PHP进行反编译,从而得到源代码)。Zend Studio并不是免费的。

经过编译后的PHP程序不能够再运行,你的服务器上必须装有Zend 公司的另一免费产品:Zend Optimizer。使用Zend Optimizer 后,就可以在你的服务器上正常运行编译过的PHP程序了。

‘柒’ php添加扩展dll文件

你这个dll是你自己编译出来的还是网上下载的?请确保和你当前的php版本相符,然后放到ext目录,打开php.ini加上一句extension=xx.dll,最后重启Apache···然后看看你的phpinfo有没有相应的信息

热点内容
h5本地数据库 发布:2025-03-16 18:43:59 浏览:593
编程器资源 发布:2025-03-16 17:59:48 浏览:903
加密软件厂商 发布:2025-03-16 17:59:44 浏览:680
鱼钩怎么样配置 发布:2025-03-16 17:59:04 浏览:157
安卓手机怎么设置快点 发布:2025-03-16 17:45:35 浏览:331
c语言字符串右对齐 发布:2025-03-16 17:42:35 浏览:131
充值钓鱼源码 发布:2025-03-16 17:28:16 浏览:470
密码锁锁住了怎么办 发布:2025-03-16 17:25:51 浏览:297
中国移动数据库 发布:2025-03-16 17:18:14 浏览:605
php二维数组函数 发布:2025-03-16 17:16:11 浏览:376