Node 或 Java 中的 Microsoft Visual Foxpro DLL 调用

Microsoft Visual Foxpro DLL call in Node or Java

我是 Visual Foxpro 的新手。我想使用 Visual Foxpro 构建动态 link 库 (dll) 文件以调用 Node 中的 Visual Foxpro 函数或 Java 构建 rest API.

我用 Node 和 Java 试过了。我在使用 Foxpro dll 文件时遇到了问题。所以我创建了一个 C# dll,并遇到了同样的问题。然后我读了一份文件说在我想用另一种母语调用的函数上方使用 > [DLLEXPORT] 标签。

我构建了一个 32 位和 64 位 dll 以与我的母语代码一起使用。它是成功的。我的问题是我想使用 Visual Foxpro 构建 32 位和 64 位 dll 文件以与 Node.js 代码一起使用。

这是我的 C# 代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;
    using net.r_eg.DllExport;
    
    namespace FDLL
    {
        public  class First
        {
            [DllExport]
            public static String getData()
            {
                Console.Write("Call Function Successfully!");
                return "HI Welcome";
            }
        }
        [DllExport]
        public static String getData1(String a)
        {
            Console.Write("Call Function Successfully!");
            return "HI Welcome"+ a;
        }
    }

如果我没有使用 [DllExport] 标签,则无法在我的节点或 java 代码中调用 getData。

这是我的 Node.js 代码:

const ffi = require("@saleae/ffi");

const libm = ffi.Library("./FDLL", {
    getData: ["string", []],
    getData1: ["string", ["string"]]
});

它工作正常,但我的 Foxpro dll 不工作。

这是我的 Visual Foxpro 代码:

这是Java用于访问我的 Foxpro GetDrugsJSON() 功能的脚本代码

 var libm1 = ffi.Library("./cw/comdemo", {
         GetDrugsJSON: ["String", []],
     });
    console.log(libm1.GetDrugsJSON())

但我无法使用 Java 脚本代码调用 GetDrugsJSON() 函数。

我该如何解决这个问题?

长话短说,您不能使用 VFP 构建 32 位和 64 位 DLL。

DLL 也是一个广义术语(虽然它是动态 Link 库的缩写,但有不同的 DLL)。

你说的是“在 Node 或 Java 中构建 rest API”。要创建 REST API,您不想使用 VFP。使用其他东西,例如 C#、Go、...

对于其他语言也是如此,如果您通过 VFPOLEDB 访问 VFP 数据,则它需要为 32 位。