Foxpro 2.6a для регулярного вызова Windows

#c# #dll #foxpro #visual-foxpro

#c# #dll #foxpro #visual-foxpro

Вопрос:

Я должен заменить существующий вызов dll, который зарегистрирован и вызывается с использованием RegFn и CallFn соответственно.

Я пытаюсь написать dll с использованием C # в надежде, что до тех пор, пока сигнатура функции совпадает, а dll находится в нужном месте, она будет работать.

итак

 pnHndl= RegFn("CALCULATE", "I", "I", "AJons.DLL")
pnRetVal = CallFn(pnHndl, 0)
  

Мой код выглядит следующим образом:

 [Guid("EAB7C2CD-2471-4BDA-90E9-F70403BAA557")]
[ComVisible(true)]
public class AJons : _AJons
{

    [ComVisible(true)]
    public int CALCULATE(int value)
    {
        return value * 2;
    }

}
  

Foxpro не играет в мяч, я просто получаю «не удалось загрузить библиотеку AJon.dll ‘

Есть ли у кого-нибудь опыт здесь?

Приветствия.

Комментарии:

1. Встроен ли RegFn в fp 2.дерьмо?

2. не встроен .. нет .. foxtools. fil обеспечивает.

Ответ №1:

Из того, что я вижу, эти действительно старые RegFn и CallFn предназначены для вызова встроенных DLL Win32 — полностью отличных от COM.

Что вам нужно для создания библиотеки DLL Win32, которая будет работать с этими функциями, — это C .

Что вам следует сделать (если вам нужно продолжать использовать FoxPro), так это, по крайней мере, использовать последнюю версию VFP.

написано на моем iPhone

Обновление 1

1) На всякий случай, если я не понял, вы не можете создать такую DLL из .NET.

2) Посмотрите на эту ссылку здесь для очень простого примера того, как написать Win32 dll.

Комментарии:

1. Должна ли такая dll также быть 16-битной?

2. Как видно из названия, библиотеки DLL Win32 являются 32-разрядными. Я обновил ответ ссылкой на простой пример.

3. Я определил более центральную точку перехвата для своего кода. Хотя ваш ответ кажется правильным, я неохотно отмечаю его как «ответ», поскольку я его не тестировал! Если я это сделаю, я это сделаю.

4. Я не думаю, что спрашивающий увидит этот комментарий — вместо этого вы должны добавить свой комментарий к его вопросу.

5. Запрашивающий не увидел комментарий! Извините, я начну кампанию, чтобы принять ответы.