導航:首頁 > 編程語言 > php調用cdll

php調用cdll

發布時間:2022-08-28 15:54:45

1. 急!php中調用win32的DLL命令怎樣寫

1.需要載入php擴展 dl("php_w32api.dll"); 2.從你的dll裡面導出函數,假定該函數在dll裡面被聲明為FuncDll,並且返回值是int類型 w32api_register_function("函數所在的dll", "FuncDll", "int"); 3.好了,現在你可以調用它了 $result = FuncDll();

2. 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後,就可以調用裡面的東西了.

3. php調用dll文件裡面的函數

1、首先從www.php.net網站上下載php源碼,此處以php-5.2.17版本為例,下載後解壓至E:盤根目錄下(目錄可以自己隨意定)。
2、下載安裝VC++ 6.0,因為PHP源碼是利用6.0版本寫的,所以使用這個版本編譯不會出現意外,別的版本未測試。
3、把VC++ 6.0安裝目錄中的 Microsoft Visual Studio\Common\MSDev98\Bin 絕對路徑添加到系統環境變數中。
4、進入E:\php-5.2.17\ext目錄,復制skeleton文件夾,並重命名為要開發擴展的名字,本例為「myfun」。
5、重命名skeleton.c為myfun.c,skeleton.dsp為myfun.dsp
6、編輯myfun目錄中的php_skeleton.h、myfun.c、myfun.dsp這三個文件,替換內容中所有extname為myfun,EXTNAME為MYFUN。(一定要嚴格區分大小寫)
下面就進入到編碼階段:
7、打開php_skeleton.h文件(頭文件),找到PHP_FUNCTION(confirm_myfun_compiled);,在 PHP_FUNCTION(confirm_myfun_compiled);,下面編寫PHP_FUNCTION(mb_MessageBox);,聲 明一個mb_MessageBox函數,此函數的作用僅是輸出js彈出一個alert消息框,用於測試。
8、下面定義函數入口,打開myfun.c文件,找到PHP_FE(confirm_myfun_compiled,NULL) ;,在下面編寫 PHP_FE(mb_MessageBox,NULL),此處注意一下,PHP_FE是定義的一個宏,所以後面不用加引號。
9、在myfun.c最後面編寫函數的實體部分:

PHP_FUNCTION(mb_MessageBox)
{
char *arg = NULL;
int arg_len, len;
char *strg;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
return;
}

len = spprintf(&strg, 0, "<script>alert('%s')</script>",arg); //此處正是輸入的js代碼
RETURN_STRINGL(strg, len, 0);
}

到這代碼書寫就完成了,下面開始編譯:
10、開始->運行,輸入CMD,打開命令行窗口。
11、進入myfun的目錄,輸入 msdev myfun.dsp /MAKE "myfun - Win32 Release_TS",回車編譯。
12、如果沒有錯誤,在E:\php-5.2.17下會生成一個Release_TS文件夾,在裡面就可以找到php_myfun.dll文件。
至此擴展dll開發完成,下面在php中進行測試:
13、把php_myfun.dll復制到原php目錄中的ext文件夾內。
14、打開php.ini文件,添加當前dll的擴展 extension=php_myfun.dll
15、重啟apache,在網站目錄下新建一文件,輸入以下內容:
<?php
echo mb_MessageBox("測試PHP擴展DLL by 馬犇");
?>
瀏覽即可看到效果

4. PHP如何調用.dll文件呀

如果你確定你的擴展*.dll能在php
正確使用的話,首先需要把這個.dll文件復制到php的安裝目錄\ext文件夾下,然後修改php.ini文件,在
;;;;;;;;;;;;;;;;;;;;;;
;
Dynamic
Extensions
;
;;;;;;;;;;;;;;;;;;;;;;
配置節上,按照格式extension
=
a.dll添加該dll文件的引用,然後重新啟動承載php的web伺服器即可。

5. 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;引用)

6. php如何調用這個dll中的函數 - 技術問答

如果是在.net環境中,可以使用反射,php下不清楚,有達人知道不?

7. php調用C#的dll 系統找不到指定文件路徑

1
.
點擊

配置

按鈕,選擇

映射

Tab
頁。
點擊

添加
...
可執行文件

設為
:
C:\WINDOWS\
system32
\inetsrv\fcgiext.dll
擴展名
設為
.php
一定要選擇

確認文件是否存在然後

確定

保存設置
2.
編輯C:\WINDOWS\system32\inetsrv\fcgiext.ini
將以下內容放到文件最後。
[Types]
php=PHP
[PHP]
ExePath="你的php的目錄\php-cgi.exe"
3.重啟IIS
說明:從微軟下載fastcgi後默認安裝fcgiext.dll
fcgiext.ini
兩個文件到C:\WINDOWS\system32\inetsrv\下
如果上述步驟不成功。請發出具體儲存信息,以便幫您分析。

8. 如何在PHP中調用自己編寫的DLL庫中的函數介面

在 DLL工程中的 cpp中函數定義如下:

extern "C" _declspec (dllexport )
int fun(int a, char b)
{
return a + b;
}
第一種方法 隱式調用:

調用的 DLL的主工程的 文件中代碼如下:

// 先把 lib 鏈接進來
#pragma comment (lib , "..//Debug//FuncDll.lib" )

// 外部聲明的 add 函數
extern "C" _declspec (dllimport )
int fun(int a, char b);

int TestDll()
{
// 直接調用 fun函數
printf("%d/n" , fun(5, 2));

return 0;
}
第二種方法 顯式調用:
調用的 DLL的主工程的 文件中代碼如下:

int TestDLL()
{
HMODULE hMole = NULL;
typedef int (*Func)(int a, int b);

// 動態載入 DLL 文件
hMole = LoadLibrary(_TEXT("..//Debug//FuncDll.dll" ));

// 獲取 fun函數地址
Func fAdd = (Func)GetProcAddress(hMole, "fun" );

// 使用函數指針
printf("%d/n" , fAdd(3, 1));

// 釋放指針
FreeLibrary(hMole);

return 0;
}

閱讀全文

與php調用cdll相關的資料

熱點內容
脈脈app干什麼用的 瀏覽:357
拽姐是哪個app 瀏覽:858
雲伺服器刪除了還有嗎 瀏覽:232
macbook可以用單片機嘛 瀏覽:307
南陽php招聘 瀏覽:814
去哪裡找按摩師很漂亮的app 瀏覽:818
86x99用簡便演算法計算 瀏覽:830
php截圖flash 瀏覽:274
卸載聯想app哪個好 瀏覽:720
php文字轉圖片 瀏覽:332
豆客後台怎麼加密碼 瀏覽:574
jpg轉換pdf破解版 瀏覽:978
php基礎書籍推薦 瀏覽:778
伺服器與外網不通如何驗證 瀏覽:353
電子版是不是就是文件夾 瀏覽:51
游戲屬性文件加密 瀏覽:464
如何讓安卓手機桌面圖標下移 瀏覽:530
ubuntuphp5環境搭建 瀏覽:101
賭癮解壓視頻 瀏覽:919
晉城移動dns伺服器地址 瀏覽:296