PHP から com 経由で .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;
}
}
}