#.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