[英]Build TagLib# DLL from source and make it COM Visible to PHP
您好我想掃描音頻 - 視頻文件並使用php將其元數據存儲在數據庫中。 我發現這個命令行包裝器使用由banshee開發人員編譯的TagLib.dll來完成這項工作。 它工作正常但受實現的功能限制。 我想通過PHP直接訪問dll方法。
在PHP中,我們有一個函數( DOTNET ),它允許我從.Net程序集中實例化一個類並調用它的方法並訪問它的屬性,如下所示:
/*$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";
我看到很多關於PHP-DLL-COM的問題,並且有一些建議:
regsvr32
注冊dll; ;
;
DESCRIPTION "Simple COM object"
EXPORTS
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
我的問題是: 如何構建DLL並通過PHP使用其方法?
我的配置 :
OS
Windows Server 2012 R2標准版i586
Apache:
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
Arch:x86
編譯器:MSVC9(Visual C ++ 2008)
COM支持:已啟用
DCOM支持:禁用
.Net支持已啟用
Microsoft Visual Studio 2013
嘗試以下步驟:
既然你有src \\ taglib-sharp.dll,你需要將它注冊到全局程序集緩存中,以便DOTNET類找到它。 如果您對此不熟悉,請參閱PHP DOTNET地獄 。
如果一切順利,你可以獲得一份SharpZipLib,並重新輸入HAVE_SHARPZIPLIB條件編譯符號 - > rebuild - >重新部署到GAC - >並成為一個快樂的人! :)
如果沒有,您可以使用.NET Framework 3.5編譯DLL,PHP無法通過DOTNET類加載它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.