您好我想扫描音频 - 视频文件并使用php将其元数据存储在数据库中。我发现这个Command-line wrapper使用TagLib.dll compiled by banshee developpers来完成这项工作。它的工作正常但受实现的功能限制。我想通过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";
这是 the Taglib# project sources in github
我看到很多关于PHP-DLL-COM的问题,并且有一些建议:
regsvr32
;
;
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
答案 0 :(得分:1)
尝试以下步骤:
现在你有了src \ taglib-sharp.dll,你需要将它注册到全局程序集缓存中,以便DOTNET类找到它。如果您不熟悉,请参阅PHP DOTNET hell。
如果一切正常,您可以获得SharpZipLib的副本,并重新输入HAVE_SHARPZIPLIB条件编译符号 - >重建 - >重新部署到GAC - >并且是一个快乐的人! :)
答案 1 :(得分:1)
如果没有,您可以使用.NET Framework 3.5编译DLL,PHP无法通过DOTNET类加载它。