我有一个C#.net dll脚本,该脚本调用包含SELECT数据的SQL存储过程来运行相关方法。
我需要使用PHP运行dll,因为我的整个应用程序都是使用PHP构建的。
最好的方法是什么?
我对C#完全没有经验。
编辑
我成功使用以下方法注册了.net dll:
RegAsm.exe DllName.dll /tlb:DllName.tlb
Run Code Online (Sandbox Code Playgroud)
我现在应该能够使用COM()如下所述的PHP 方法来调用dll的函数/方法。
但是COM(),由于.net dll被注册为程序集,这些功能是否仍可以通过该方法访问?这有什么不同吗?
编辑
注册.net dll程序集后,当我尝试使用COM()以下方法调用该方法时,出现错误消息:
"PHP Fatal error: Uncaught exception 'com_exception' with message 'Failed
to create COM object `DllName.ClassName': Invalid syntax"
Run Code Online (Sandbox Code Playgroud)
编辑
尝试使用:
new DOTNET('DllName, Version=4.0.30319.33440, Culture=neutral,
PublicTokenKey=14843e0419858c21', 'ClassName');
Run Code Online (Sandbox Code Playgroud)
出现internal server 500错误
这是因为PHP无法与.net 4程序集通信吗?
您可以使用 PHP 的 COM 类调用该函数。
您需要在 Windows 上运行 PHP,如果您使用的是 C# DLL,我假设您需要在 Windows 上运行 PHP。
脚步:
regasm yourdllname.dll使用命令提示符或运行对话框中的命令注册 DLL 。您的计算机上安装的每个 .NET 版本都有一个RegAsm.exe ,因此请确保通过从%windir%\Microsoft.NET\AppropriateVersion运行该程序来执行 DLL 所针对的 .NET 版本的RegAsm.exe 。例子:
$object = new COM('MyDllProjectName.MyDllClassName');
$object->myMethod();
Run Code Online (Sandbox Code Playgroud)
如前所述,更简洁的跨平台选项是直接在 PHP 中重新实现 SQL 查询,特别是如果您使用 DLL 的唯一原因是运行查询。
| 归档时间: |
|
| 查看次数: |
12215 次 |
| 最近记录: |