Вызов DLL Microsoft Visual Foxpro в Node или Java - PullRequest
0 голосов
/ 12 июля 2020

Я новичок в Visual Foxpro. Я хочу создать файл динамической c библиотеки ссылок (dll), используя Visual Foxpro для вызова функции Visual Foxpro в Node или Java для создания rest API.

Я пробовал это с Node и Java . У меня возникла проблема, когда я использовал файл DLL Foxpro. Итак, я создал C# dll и получил ту же проблему. Итак, я прочитал документ, в котором говорится об использовании тега > [DLLEXPORT] над функцией, которую я хочу вызвать на другом родном языке.

Я создал 32-разрядную и 64-разрядную версию dll для использования с кодом моего родного языка. Это было успешно. Мой вопрос в том, что я хочу создать как 32-разрядные, так и 64-разрядные файлы dll с помощью Visual Foxpro для использования с кодом 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], getData нельзя было бы вызвать в моем коде Node или java.

Это мой Node.js код:

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

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

Работает нормально, но моя dll Foxpro не работает.

Это мой код Visual Foxpro:

скриншот кода VFP

Это код JavaScript для доступа к моей функции Foxpro GetDrugsJSON()

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

Но я не могу вызвать функцию GetDrugsJSON() с кодом JavaScript.

Как исправить эту проблему?

1 Ответ

1 голос
/ 13 июля 2020

Короче говоря, вы не можете построить 32- и 64-битную DLL с помощью VFP.

Также DLL - это широкий термин (хотя это сокращение от Dynami c Link Library, существуют разные библиотеки DLL).

Вы говорите «в Node или Java для создания остальных API». Для создания REST API вы не захотите использовать VFP. Используйте что-нибудь другое, будь то C#, Go, ...

С другими языками тоже, если вы получаете доступ к данным VFP через VFPOLEDB, тогда это должно быть 32 бита.

...