こんにちは、オーディオ ビデオ ファイルをスキャンし、そのメタデータを 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