QuickFix для NET не распознает BeginString или завершается с ошибкой из-за rasapi32.dll «пропавший без вести»

#.net #quickfix #quickfixn

#.net #быстрое исправление #быстрое исправление

Вопрос:

Мы пишем .СЕТЕВОЕ приложение для использования QuickFix 5.0.SP2.

Доступно 2 пакета Nuget: QuickFix.Net.NETCore.FIX50SP2 и QuickFIXn.FIX5.0SP2

При использовании QuickFIXn.FIX5.0SP2 — инициатор отлично работает на компьютере разработчика, на тестовой машине, но не может подключиться к рабочей машине с DllNotFoundException «Не удается загрузить ‘rasapi32.dll ‘», несмотря на rasapi32.dll действительно существует на машине.

При использовании QuickFix.Net.NETCore.FIX50SP2 — инициатор загружается и подключается на всех машинах, но не может принять никаких сообщений, кроме сообщений администратора. Любые сообщения приложения заставляют его выйти из системы с сообщением «Неподдерживаемая начальная строка».

Вот пример сообщения, которое я пытаюсь отправить и получить (QuoteRequest)

 8=FIXT.1.1|9=0332|35=R|49=ABC|56=DEF|34=172|52=20201103-13:06:01.420|1180=xxxxxx|1181=6183|60=20201103-13:06:00.985483|131=1604393423979-735|146=1|55=EUR/USD|63=SPOT|15=EUR|54=0|38=5000000|453=4|448=ST_TEST_BU2|447=D|452=500|2376=18|448=x.abc.sales|447=D|452=11|2376=24|448=X_TEXT|447=D|452=3|2376=24|448=X_ACCOUNT2|447=D|452=24|2376=18|10=163|
 

Настройки инициатора:

 [SESSION]
AppDataDictionary=FIX50SP2.xml
StartTime=00:00:00
EndTime=23:59:59
BeginString=FIXT.1.1
SenderCompID=DEF
TargetCompID=ABC
HeartBtInt=30
DefaultApplVerID=FIX.5.0SP2
TransportDataDictionary=FIXT11.xml
 

Настройки приемника:

 [SESSION]
AppDataDictionary=FIX50SP2.xml
StartTime=00:00:00
EndTime=23:59:59
BeginString=FIXT.1.1
SenderCompID=ABC
TargetCompID=DEF
HeartBtInt=30
DefaultApplVerID=FIX.5.0SP2
TransportDataDictionary=FIXT11.xml
 

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

1. Проверьте переменную среды PATH для компьютера.

2. «QuickFix.Net.NETCore.FIX50SP2» не является официальным пакетом. Он был создан каким-то случайным образом и использует старый код. (Я понятия не имею, что rasapi32.dll проблема в том, что, извините.)

3. @HansPassant Спасибо, я проверю это завтра

4. @GrantBirchmeier На странице Nuget в QuickFix.Net.NETCore.FIX50SP2 указано, что авторами являются «AlgomateInc, Connamara Systems, LLC и участники QuickFix / n». Это сбивает с толку 🙂

5. @dedpichto Да, этот rando опубликовал пакет из официального источника и дал законный кредит проекту (хотя я никогда не слышал об AlgomateInc). Тем не менее, я буквально являюсь ведущим разработчиком QuickFix / n , и я работаю в Connamara, и я говорю вам, что это не официальный релиз Nuget 🙂

Ответ №1:

Ваша программа не может найти динамическую библиотеку Windows (в .Net, называемую сборкой), имя rasapi32.dll которой указано во время выполнения. Этот файл, скорее всего, зависит от другой библиотеки, с которой ваша программа связывается напрямую. Я бы предположил, что библиотека QuickFix.

Если вы можете найти rasapi32.dll что-то на своем компьютере, вы можете либо добавить его путь к переменной среды PATH, либо скопировать его в рабочий каталог вашей программы. Использование переменной среды PATH предпочтительнее в случае, если этой библиотеке требуются другие в ее собственном каталоге.

В качестве альтернативы вы можете использовать программу, вызываемую depends для обхода дерева зависимостей библиотек вашей программы, и она укажет, какая библиотека требуется вашей программе, что, в свою очередь, требует rasapi32.dll