本文目錄一覽:
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