You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

64位Progress ABL调用libpcre2-8.dll找不到入口点_pcre2_compile@40

在Progress ABL中调用libpcre2-8.dll的pcre2_compile函数遇入口点找不到问题

我通过某Git仓库编译了64位的libpcre2-8.dll,现在尝试在64位Progress ABL程序中调用pcre2_compile函数,持续报错:

Could not find the entrypoint _pcre2_compile@40. (3260)

已尝试以下操作但未解决:

  • 确认动态库和Progress环境均为64位
  • 在ABL中设置LIBRARY-CALLING-CONVENTION为STDCALL、CDECL或不指定,错误依旧

使用的Progress ABL代码片段(来自某仅支持32位环境的Git仓库):

PROCEDURE pcre2_compile :
    DEFINE INPUT               PARAMETER pattern     AS CHARACTER. /* const char *          */
    DEFINE INPUT               PARAMETER options     AS INTEGER.   /* int                   */
    DEFINE       OUTPUT        PARAMETER errcodeptr  AS INTEGER.   /* int *                 */
    DEFINE       OUTPUT        PARAMETER errptr      AS MEMPTR.    /* const char **         */
    DEFINE       OUTPUT        PARAMETER erroffset   AS MEMPTR.    /* int *                 */
    DEFINE INPUT               PARAMETER tableptr    AS INTEGER.   /* const unsigned char * */
    DEFINE              OUTPUT PARAMETER result      AS MEMPTR.    /* pcre *                */

    DEFINE VARIABLE libName AS CHARACTER NO-UNDO.
    DEFINE VARIABLE hCall   AS HANDLE    NO-UNDO.

    libName = get-library().

    CREATE CALL hCall.
    ASSIGN
        hCall:CALL-NAME                  = "pcre2_compile"
        hCall:LIBRARY                    = "lib/libpcre2-8.dll"
        //hCall:LIBRARY-CALLING-CONVENTION = "STDCALL"
        hCall:CALL-TYPE                  = DLL-CALL-TYPE
        hCall:NUM-PARAMETERS             = 6
        hCall:RETURN-VALUE-DLL-TYPE      = "MEMPTR".

    hCall:SET-PARAMETER(1, "CHARACTER", "INPUT" , pattern    ).
    hCall:SET-PARAMETER(2, "LONG"     , "INPUT" , options    ).
    hCall:SET-PARAMETER(3, "HANDLE TO LONG"     , "OUTPUT", errcodeptr ).
    hCall:SET-PARAMETER(4, "MEMPTR"   , "OUTPUT", errptr     ).
    hCall:SET-PARAMETER(5, "MEMPTR"   , "OUTPUT", erroffset  ).
    hCall:SET-PARAMETER(6, "LONG"     , "INPUT" , tableptr   ).
    hCall:INVOKE().
    ASSIGN result = hCall:RETURN-VALUE.

    DELETE OBJECT hCall.

END PROCEDURE.

更新:用Dependency Walker检查后发现,DLL中实际存在的函数是带_8后缀的pcre2_compile_8,但尝试调用这个名称后仍出现相同的入口点找不到错误。

Dependency Walker显示的函数列表

内容的提问来源于stack exchange,提问作者Lieven Cardoen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:20:28