PHP 调用 C# dll
弄了半天, PHP 终于能调用我的C# dll 了.
该死的,我对C# COM注册一向不了解, PHP 文档上只给PHP那部分内容,没告诉我怎么弄dll
我还傻兮兮的用 Regsvr32 注册那个c# dll.
背景:
Windows xp sp3 ; apache 2.2.14 ; php 5.2.12 ;
VS2010 beta ;
语言:
PHP5 , C#
C#部分:
创建一个 C# Class Library . (dll)
创建完成后, 打开项目的属性,
在点选左边的 "Application"(就是第一个tab) , 然后点击 Assembly Information 按钮 ,
在弹出的Dialog中, 必须在底部勾上: Make assembly COM-visible !
否则 , 这个dll将不能以COM方式访问 .
( 当然, 你也可以在代码中的类声明中写上[ComVisible(true)] , 效果一样)
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace test
{
//[ComVisible(true)] //or check "Assembly COM-Visible" at Application-Assembly_Information dialog ;
public class PhpImage
{
public string test()
{
return "Hello world!";
}
}
}
然后编译出了dll , 这里叫 phpimage.dll
我以为直接在php中写如下语句既可:
<?php
$myPhpImg = new COM("test.PhpImage");
echo $myPhpImg ->test() ;
?>
后来结果当然是错误的,无法创建com对象.
其实用屁股想也知道, 系统哪里知道test.PhpImage是对应哪一个dll !
搞了半天, 后来发现一个帖子,依样画葫芦:
http://hi.baidu.com/softways/blog/item/6c0755b515731dcb36d3cabf.html
他是要:发布C# COM DLL
我也差不多,我只是想知道怎么注册C# 的 COM DLL
我就再重复一遍吧:
关键是 RegAsm.exe 这个.net 工具程序, 相关介绍:
http://msdn.microsoft.com/zh-cn/library/tzat5yw6(VS.80).aspx
这么注册C# COM DLL的 :
(ps:我的dll叫phpimage.dll )
(ps2:请在phpimage.dll的文件夹下,调用这个命令行)
regasm phpimage.dll /tlb:phpimage.tlb /codebase
ok, 你不放心可以查找register, 你会发现里面有一个 test.PhpI
相关文档:
/***************************by
garcon1986********************************/
<?php
//example1
$makefoo = true;
bar();
if($makefoo){
function foo(){
echo "doesn't exist.<br>";
}
}
if($makefoo)foo();
function bar(){
echo "exist<br>";
}
//example2
funct ......
/***************************by garcon1986**************************/
form.html
<html>
<head>
<title>Upload File</title>
</head>
<body>
<form enctype="multipart/form-data" method="POST" action="uploader.php">
<label> ......
Windows下PHP的安装虽然简单,但如果不注意方法,仍然会让你头疼。此外,PHP 5.2版本与之前4.x版本也有一些不同,所以有必要记录一下,避免下次忘记了这样的安装配置方法。
步骤一:下载php 5.2 for windows的安装包,解压至C:\php。注意此解压目录可以是在任何盘下,然而目录名不能包含空格;
以下是php5.2的文件目录:
......
1.php 数据类型:浮点型,字符串,整形,逻辑型
2.$a="test"; print($a); 在php.ini 中设置error_reporting=E_ALL 警告状态时,会有提示。此用于测试未定义的变量。可以使用isset()检测变量是否存在,unset清除变量(),常量定义define("a","test");定义的常量具有全局作用。define 无法定义对象的数据结构,不过可以先存储变量 ......
Web控件是否支持样式表(CSS)呢?
支持,所有的Web控件都从基类System.Web.UI.WebControls.WebControl中继承了一个叫做CssClass的属性。
示例源代码:
<html>
<head>
<style>
.Input { font: 10pt verdana; color: red; }
</style>
</head>
<body>
<form runat=& ......