#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. Запрашивающий не увидел комментарий! Извините, я начну кампанию, чтобы принять ответы.