我一直在尝试通过 com 从 PHP 调用 .net 程序集(使用 DOTNET())。似乎 php 正在找到 DLL 并正确初始化,但由于某种原因我看不到/使用这些方法。任何人都知道我可以如何解决这个问题?
这是我用来调用 .net 类的 php 代码。当我调用它时,输出是“hello1 hello2”。当我尝试通过 $csclass->ModelBuilder("","") 直接调用该函数时,我收到一个 500 服务器错误,指出它找不到该函数。
<?php
echo "hello1";
try{
$csclass = new DOTNET("ModelBuilder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1208136d23b48dc5",
"ModelBuilder.ModelBuilder2");
$class_methods = get_class_methods($csclass);
foreach ($class_methods as $method_name) {
echo "$method_name\n";
}
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
echo "hello2";
?>
这是我试图调用的程序集中的类(使用 .net 3.5 构建,使用强名称签名,并使用 gacutil 注册):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using OfficeOpenXml;
using System.Runtime.InteropServices;
namespace ModelBuilder
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class ModelBuilder2
{
[ComVisible(true)]
public Boolean BuildModel(String outputFileLoc,String excelTemplateFile)
{
try
{
//do stuff
return true;
}
catch (Exception e)
{
return false;
}
}
}