Foxpro 2.6a для вызова Windows RegFn

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

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

so

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»

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

Ваше здоровье.


person Jon H    schedule 12.10.2011    source источник
comment
RegFn встроен в fp 2.crap?   -  person William Mioch    schedule 13.10.2011
comment
не встроен.. нет.. предоставляет foxtools.fil.   -  person Jon H    schedule 13.10.2011


Ответы (1)


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

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

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

написано на моем айфоне

Обновление 1

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

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

person William Mioch    schedule 13.10.2011
comment
Должна ли такая dll быть 16-битной? - person Jon H; 13.10.2011
comment
Как видно из названия, библиотеки DLL Win32 являются 32-разрядными. Я обновил ответ ссылкой на простой пример. - person William Mioch; 14.10.2011
comment
Я определил более центральную точку перехвата для моего кода. Хотя ваш ответ кажется здравым, я не хочу отмечать его как «ответ», поскольку я его не проверял! Если я это сделаю, я сделаю. - person Jon H; 18.10.2011
comment
Я не думаю, что спрашивающий увидит этот комментарий - вместо этого вы должны добавить свой комментарий к его вопросу. - person William Mioch; 18.11.2011
comment
Автор вопроса не увидел комментарий! Извините, я начну кампанию, чтобы принять ответы. - person Jon H; 24.04.2012