PHPでDLLにアクセスする必要があるプロジェクトがあります。サーバーはWindowsマシンであり、ApacheサーバーはXAMPPによって提供されます。
私はウェブで複数の回答を読んでいます
DLL in HTA
/Javascript
:
<object style="display:none" id="SOME_ID" classid="clsid:SOME_CLASS_ID" codebase="./somePath.dll"></object>
誰かが実用的な例を持っていますか?
PHPでこれまでに試したことは次のとおりです。
$obj = new COM('pathTo.dll');
DLLに関する情報:
the DllRegister Server entry point was not found
に登録しようとすると、次のエラーregsvr32
が表示されますregsvr32
に登録せずに使用できますか?
DLLファイルを作成するときは、 モジュール定義ファイル を使用する必要があります。これには、次のようなものが含まれます。
;
;contains the list of functions that are being exported from this DLL
;
DESCRIPTION "Simple COM object"
EXPORTS
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
その定義により、regsvr32はDllRegisterServerエントリポイントを見つけることができます。
別のオプションとして、/ nフラグをregsvr32に渡すこともできます。
Regsvr32 [/ u] [/ n] [/ i [:cmdline]] dllname
/ u-サーバーの登録を解除します
/ i-オプションの[cmdline]を渡してDllInstallを呼び出します。/uと一緒に使用すると、dllのアンインストールを呼び出します
/ n-DllRegisterServerを呼び出さない。このオプションは/ iと共に使用する必要があります
/ s –サイレント。メッセージボックスを表示しない(Windows XPおよびWindows Vistaで追加)
最終的に、DLLをPHPで動作させる前に、DLLが一般的に動作することを確認する必要があります。
A DLL Linux/Apacheサーバーからアクセスできないため、プロジェクトはドロップされました。
私は同じ問題を抱えていて、いくつかの手順を修正しました:
C:\Windows\system32\regsvr32 xwizards.dll
(例です)PHPコードに書き込みます:
try {
$dll = new COM('<theNameOfDllFile>.<NameOfTheClass>'); //without extension '.dll' for theNameOfDllFile
$dll->Function();
} catch(Exception $e){
echo 'error: ' . $e->getMessage(), "\n";}
これで、クラスの管理方法とDLLの機能がわかっている場合は問題ありませんが、画面にエラーマッサージが表示されないはずです
わからなかった場合はお知らせください。次回は頑張ります:)