15

こんにちは、オーディオ ビデオ ファイルをスキャンし、そのメタデータを PHP を使用してデータベースに保存したいと考えています。banshee 開発者によってコンパイルされた TagLib.dllを使用してジョブを実行するこのコマンドライン ラッパーを見つけました。正常に動作しますが、実装されている機能によって制限されます。PHP経由でdllメソッドに直接アクセスしたい。

PHP には、.Net アセンブリからクラスをインスタンス化し、そのメソッドを呼び出して、次のようにそのプロパティにアクセスできる関数 ( DOTNET ) があります。

/*$obj = new DOTNET("assembly", "classname");*/  

$stack = new DOTNET("mscorlib", "System.Collections.Stack");
$stack->Push(".Net");
$stack->Push("Hello ");
echo $stack->Pop() . $stack->Pop();

//Returns string(10) "Hello .Net";

github の Taglib# プロジェクト ソースは次のとおりです

PHP-DLL-COM に関連する多くの質問を見ましたが、いくつかの推奨事項があります。

  • dll を comVisible にします。
  • でdllを登録しregsvr32ます。
  • 次のようなモジュール定義ファイルを使用します

;

;

DESCRIPTION     "Simple COM object"

EXPORTS
                DllGetClassObject       PRIVATE
                DllCanUnloadNow         PRIVATE
                DllRegisterServer       PRIVATE
                DllUnregisterServer     PRIVATE

私の質問は、どうすれば DLL をビルドし、PHP 経由でそのメソッドを使用できますか?

私の設定

  • OS

    Windows Server 2012 R2 標準版 i586

  • アパッチ:

    Apache/2.2.21 (Win32) DAV/2 PHP/5.4.42 mod_ssl/2.2.21 OpenSSL/0.9.8r

  • PHP

    PHP バージョン: 5.4.42 アーキテクチャ
    : x86
    コンパイラ: MSVC9 (Visual C++ 2008)
    COM サポート: 有効
    DCOM サポート: 無効
    .Net サポート有効

  • マイクロソフト ビジュアル スタジオ 2013

4

2 に答える 2