在Delphi XE中正確使用Apache方法apr_pool_create_ex是什麼?在Delphi XE中正確使用Apache方法apr_pool_create_ex是什麼?
我已經創建了Apache模塊,但都是Handlers。現在我正在開發服務提供商。一個框架模塊已經被創建,我的child_init回調方法被Apache調用。在child_init方法中,我成功調用了ap_pool_create_ex *(返回APR_SUCCESS),但是在離開child_it調用之後,我在第三個或第四個工作線程(httpd.exe)產生期間收到訪問衝突(第三個事件顯示在事件中日誌)。
procedure provider_child_init(pchild: Papr_pool_t; s: Pserver_rec); cdecl;
var
rv : apr_status_t;
mypool : Papr_pool_t;
begin
rv := -1;
rv := apr_pool_create_ex(@mypool,pchild,nil,nil);
end;
的AV消息是:
「項目C:\ APACHE2.2 \ BIN \ http.exe 提出太多連續 例外:「訪問衝突在 00000000:地址讀 0x00000000'。進程已停止。使用步驟 或運行以繼續」
事件日誌:
…
Thread Start: Thread ID: 5652. Process httpd.exe (4212)
Thread Start: Thread ID: 5132. Process httpd.exe (4212)
Thread Start: Thread ID: 5988. Process httpd.exe (4212)
注:發生在線程ID的AV 5988和4212是父httpd.exe進程。
- Windows「libapr-1.dll」不包含「apr_pool_create」,這就是爲什麼我使用「_ex」版本的原因。任何想法爲什麼apr_pool_create缺失?我看到apr_pool_create被用於其他成功的modules,儘管它們是用'C'寫成的。
OS:Windows 7企業版64位
阿帕奇:2.2.17.0
IDE:德爾福XE
關於apr_pool_create丟失的原因,可能不會從DLL中導出,因爲您可以使用它執行任何操作,您也可以使用apr_pool_create_ex等操作。儘管如此,用C編寫的模塊仍然可以靜態鏈接到它。 – 2011-03-26 00:34:31