简体   繁体   中英

QuickFix for NET does not recognize BeginString or fails because of rasapi32.dll "missing"

We are writing .NET application for using QuickFix 5.0.SP2.

There are 2 Nuget packages available: QuickFix.Net.NETCore.FIX50SP2 and QuickFIXn.FIX5.0SP2

When using QuickFIXn.FIX5.0SP2 - the initiator works fine on a developer machine, on the test machine but fails to connect on the production machine with DLLNotFoundException "Unable to load 'rasapi32.dll'" , despite rasapi32.dll does exists on the machine.

When using QuickFix.Net.NETCore.FIX50SP2 - the initiator loads and connects on all machines, but cannot accept any message except admin messages. Any App messages force it to logout with 'Unsupported BeginString' message.

Here is an example message I try to send and receive (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|

Initiator settings:

[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

Acceptor settings:

[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

Your program can not find the Windows dynamic library (in.Net called an assembly) named rasapi32.dll at run-time. This file is most likely a dependency of another library your program is linking directly with. I would guess the QuickFix library.

If you can find rasapi32.dll somewhere on your machine you can either add its path to the PATH environment variable or copy it to the working directory of your program. Using the PATH environment variable is preferable in case this library requires other ones in its own directory.

Alternatively you can use a program called depends to walk the tree of library dependencies of your program, and it will indicate which library your program requires, that in turn requires rasapi32.dll

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM