php怎麼調用c的動態鏈接庫(js調用dll動態鏈接庫)

本文目錄一覽:

PHP如何用調用C#編寫的DLL

1. 創建一個 C# Class Library ,命名為:HelloWorld

2. 打開項目的屬性,在點選左邊的 “Application”(就是第一個tab) , 然後點擊Assembly Information 按鈕 ,在彈出的Dialog中, 必須在底部勾上: Make assembly COM-visible !否則 , 這個dll將不能以COM方式訪問 .( 也可以在代碼中的類聲明中寫上[ComVisible(true)] , 效果一樣,需要增加using System.Runtime.InteropServices;引用)

PHP調用C#開發的dll類庫方法

3. 創建強命名簽名文件並使用

使用vs.net的「Vsitual Studio .Net工具」–Vistual Studio .Net命令提示符,輸入 sn -k d:HelloWorld.snk 回車即創建了強命名簽名文件

打開項目的屬性,點選左邊Signing 勾上Sign the assembly 在 Choose a strong name key file:處選擇 選擇剛才創建的HelloWorld.snk文件

4. 創建類庫並編譯成dll

複製代碼 代碼如下:

namespace HelloWorld

{

//[ComVisible(true)] //or check “Assembly COM-Visible” at Application-Assembly_Information dialog ;

public class Hello

{

public string Write()

{

return “Hello World”;

}

}

}

5. 找到dll文件夾路徑 ,然後使用vs.net的「Vsitual Studio .Net工具」–Vistual Studio .Net命令提示符

進入該dll文件夾下輸入:

複製代碼 代碼如下:

regasm HelloWorld.dll回車

這時候,這個.dll的.net程序集就變成一個標準的Com組件了,但是還不能用,必須讓它變成全局Com組件.

將程序集添加到全局程序集緩存中

進入提示符窗口,輸入:

複製代碼 代碼如下:

gacutil /I HelloWorld.dll回車

這時,你的這個dll就被複制到全局程序集緩存中了.也就是說無論在這個電腦的哪個硬碟上都可以使用此dll組件了.

如果不進行強命名簽名,這一步會提示載入失敗:

PHP可否調用動態鏈接庫

當php.ini中的enable_dl選項為on時,可以使用下面這個函數來載入dll文件:

int dl ( string library ),但是當系統處於安全模式時,即使enable_dl為on,也無法使用.

?php

// Example loading an extension based on OS

if (!extension_loaded(‘sqlite’)) {

if (strtoupper(substr(PHP_OS, 0, 3) == ‘WIN’)) {

dl(‘php_sqlite.dll’);

} else {

dl(‘sqlite.so’);

}

}

// Or, the PHP_SHLIB_SUFFIX constant is available as of PHP 4.3.0

if (!extension_loaded(‘sqlite’)) {

$prefix = (PHP_SHLIB_SUFFIX == ‘dll’) ? ‘php_’ : ”;

dl($prefix . ‘sqlite.’ . PHP_SHLIB_SUFFIX);

}

?

這屬於動態載入dll文件,還有一種方法就是,將你的dll文件放到php的ext目錄下,然後在你的php.ini文件裡面找到一大堆:extension=php_xxxx.dll那裡,找個空行,按照這個寫法寫上去,注意前面不要有”;”號.重啟apache後,就可以調用裡面的東西了.

php怎麼調用 dll動態庫

做成 php 的擴展,就可以調用了。 把做好的dll文件放在php的擴展模塊路徑下面,然後在php.ini文件中追加 extension=extname.dll 如果dll文件沒問題,接著就可以在php文件中直接調用其中的函數了。

PHP能調用第三方動態鏈接庫嗎?

一般情況下是這樣的,先在require里添加想要使用的第三方插件,然後composer update,之後在app/config/app.php中添加ServiceProvider和alias。

composer.json

`”autoload”: {

“classmap”: [

“app/commands”,

“app/controllers”,

“app/models”,

“app/database/migrations”,

“app/database/seeds”,

“app/tests/TestCase.php”

“app/your_dir/test.php”

]

},`

原創文章,作者:K9JAP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128591.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
K9JAP的頭像K9JAP
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • Lazarus LoadLibrary:DLL動態鏈接庫的載入和使用

    本文將從以下幾個方面介紹Lazarus中LoadLibrary和FreeLibrary函數的使用方法: 一、簡介 LoadLibrary和FreeLibrary是Windows動態…

    編程 2025-04-27
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27

發表回復

登錄後才能評論