2016-05-16 5 views
2

私はサーバー側でCakePHPを使ってWebアプリケーションを開発しています。そのプラットフォームにアクセスするために第三者が提供するDLLを使用する必要があるため、DLLのソースコードはありません。それを変更してください。私はこれについて調査しましたが、これを行う簡単な方法は見つかりませんでした。PHPでdllを読み込む最良の方法は何ですか?

PHPでDLLをロードする最も良い方法は何ですか?

サードパーティ製のDLLへのラッパーとして機能するPHP拡張機能をビルドする必要がありますか?

他の方法もありますか?

ありがとうございます。

UPDATEは

私は、COMオブジェクトとしてDLLを使用することができますが、私はWindows上で、クライアントがサーバーを展開する必要があるたびに、DLLを登録する必要があるだろう、と私はたいことがわかってきましたdllの登録を必要としないソリューションです。

UPDATE

おそらくCOMオブジェクトとして使用されるようにコンパイルされていないことを意味する、(「エントリポイントのDllRegisterServerが見つかりませんでした」)私は、DLLを登録しようとしたが、私はエラーを得ました。私は唯一のオプションは、DLLをラップするC/C++のPHP拡張を作成するか、DLLをラップしてDOTNETのPHP拡張モジュールを使用するC++/C#COMオブジェクトを作成することだと思います。

[DllImport("dapi.dll", EntryPoint = "#100", PreserveSig = false, 
     CallingConvention = CallingConvention.StdCall)] 
    public static extern Idapi CreateDapi(); 

IがCMDにRegasm.exeによってユーティリティを使用してCOMオブジェクトとしてラッパーを登録:

+0

を?あなたは、PHPの['exec()'](http://php.net/manual/en/function.exec.php)とhttp://stackoverflow.com/questions/3044395/how-do- i-execute-a-dll-file – MonkeyZeus

+0

dllの中でObjectを返すメソッドを呼び出して、そのオブジェクトからいくつかのメソッドを呼び出す必要があるため、そうするつもりはないと思います。 COMオブジェクトとしてdllを使用できることがわかりましたが、クライアントをサーバーにデプロイする必要があるたびにWindowsにdllを登録する必要があります。 –

+0

デプロイスクリプトがDLLを自動的に登録できませんでしたか? – CherryDT

答えて

1

私はDLLの.NET COM可視ラッパーを実装することになった、私はこのようなDLLの機能をインポート:

regasm /codebase dapiWrapper.dll 

とPHPで私はこのようなCOMオブジェクトのインスタンス化:あなたがWindowsは、右実行している

$this->dapiCom = new COM("DapiWrapper.DapiWrapper") or die("Error"); 
関連する問題